!$h!3      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdef g h i j k l m n o p q r s t u v w x y z { | } ~                                   ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 89:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKL M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!""""""""""""""####################$$$$$$$$$$$$$$$$%%%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#&$&%&&&'&(&)'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~))))))))))))))))))))))))))))))))))))))))))))))**********++++,,,,,,,,,,-----------------------.........................     ////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/90:0;0<0=0>0?0@0A0B0C0D0E0F0G0H0I0J0K0L0M0N0O0P0Q0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i1j1k1l1m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}~33333333333333333333333333333444444444444444444444444444444444444444444444444444444444444444444444444444444444444444 4 4 4 4 4444444444444444444 4!4"4#5$5%5&5'5(5)5*5+5,5-5.6/606162636465666768696:7;7<7=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8N9O9P9Q9R9S9T9U9V9W9X9Y9Z:[:\:]:^:_:`:a:b:c:d:e:f:g:h:i:j:k:l:m:n;o;p;q;r;s;t;u;v;w;x;y;z;{;|;};~;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<==========>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???????????????@@@@@@@@@@@@@@@AAAAAA A A A A BBBBBBBBBBBBBB !"#$%&'()*+,-./0123456789:C;C<C=C>C?C@CACBCCCDCECFCGCHDIDJDKDLDMDNEOEPEQERESETEUEVEWEXEYEZE[E\E]E^E_E`EaEbEcEdEeEfEgEhEiEjEkElEmEnEoFpFqFrFsFtFuFvFwFxFyFzF{F|F}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF G G G G GGGGGGGGGGGGGGGGGGG G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8H9H:I;I<I=I>I?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII I I I I IIIIIIIIIIIIIIIIIII I!I"I#I$I%I&I'I(I)I*I+I,I-I.I/I0I1I2I3I4I5I6I7I8I9I:I;I<I=I>I?I@IAIBICIDIEIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I^I_I`IaIbIcIdIeIfIgIhIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I !I "I #I $I %I &I 'I (I )I *I +I ,I -I .I /I 0I 1I 2I 3I 4I 5I 6I 7I 8I 9I :I ;I <I =I >I ?I @I AI BI CI DI EI FI GI HI II JI KI LI MI NI OI PI QI RI SI TI UI VI WI XI YI ZI [I \I ]I ^I _I `I aI bI cI dI eI fI gI hI iI jI kI lI mI nI oI pI qI rI sI tI uI vI wI xI yI zI {I |I }I ~I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I J J J J J J J J J J J J J J J J J J J J J J J J J J K K K K K K K K K K K K K K K K K K K L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L M M M M M M M M M M M M M M M M M M N N N !N "N #N $N %N &N 'N (N )N *N +N ,N -N .N /N 0N 1N 2N 3O 4O 5O 6O 7O 8O 9O :O ;O <O =O >O ?O @O AO BO CO DO EO FO GO HO IO JO KO LO MO NO OO PO QO RO SO TO UO VO WO XO YO ZO [O \O ]O ^O _O `O aO bO cO dO eO fO gO hO iO jO kO lO mO nO oO pO qO rO sO tO uO vO wO xO yO zO {O |O }O ~O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P !P "P #P $P %P &P 'P (P )Q *Q +Q ,Q -Q .Q /Q 0Q 1Q 2Q 3Q 4Q 5Q 6Q 7Q 8Q 9Q :Q ;Q <Q =Q >Q ?Q @Q AQ BQ CQ DQ EQ FQ GQ HQ IQ JQ KQ LQ MQ NQ OQ PQ QQ RQ SQ TQ UQ VR WR XR YR ZR [R \R ]R ^R _R `R aR bR cR dR eR fR gR hR iR jR kR lR mR nR oR pR qR rR sR tR uR vR wR xR yR zR {R |R }R ~R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S S T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T U U U U U U U U U U U U U U U U U U U !U "U #U $U %U &U 'U (U )U *U +U ,U -U .U /U 0U 1U 2U 3U 4U 5U 6U 7U 8U 9U :U ;U <U =U >U ?U @U AU BU CU DU EU FU GU HU IU JU KU LU MU NU OU PU QU RU SU TU UU VU WU XU YU ZU [U \U ]U ^U _U `U aU bU cU dU eU fU gU hU iU jU kU lU mU nU oU pU qU rU sU tU uU vU wV xV yV zV {V |V }V ~V W W W W W W W W W W W W W W W W W W W W W X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Z Z Z Z Z Z Z Z Z Z Z Z Z Z !Z "Z #Z $Z %Z &Z 'Z (Z )Z *Z +Z ,Z -Z .Z /Z 0Z 1Z 2Z 3Z 4Z 5Z 6Z 7Z 8Z 9Z :Z ;Z <Z =Z >Z ?Z @Z AZ BZ CZ DZ EZ FZ GZ HZ IZ JZ KZ LZ MZ NZ OZ PZ QZ RZ SZ TZ UZ VZ WZ XZ YZ ZZ [Z \Z ]Z ^Z _Z `Z aZ bZ cZ dZ eZ fZ gZ hZ iZ jZ kZ lZ mZ nZ oZ pZ qZ rZ sZ tZ uZ vZ wZ xZ yZ zZ {Z |Z }Z ~Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ [ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \\\\\\\\\\ \ \ \ \ \\\\\\\\\\\\\\\\\\\ \!\"\#\$\%\&\'\(\)\*\+\,\-\.\/\0\1\2\3\4\5\6\7H8H9H:H;H<H=H>H?H@HAHBHCHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZH[H\H]H^H_H`HaHbHcHdHeHfHgHhHiHjHkHlHmHnHoHpHqHrHsHtHuHvHwHxHyHzH{H|H}H~HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH]]]]]]]]]]]]]]]]]]]]^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^____ _ _ _ _ ___________________ _!_"_#_$_%_&_'_(_)_*_+_,_-_._/_0_1_2_3_4_5_6_7_8_9_:_;_<_=_>_?_@_A_B_C_D_E_F_G_H_I_J_K_L_M_N_O_P_Q_R_S_T_U_V_W_X_Y_Z_[_\_]_^___`_a_b_c_d_e_f_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_z_{_|_}_~_``````````````````````````````````````````````aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a a a a aaaaaaaaaaaaaaaaaaa a!a"a#a$a%a&a'a(a)a*a+a,a-a.a/a0a1a2a3a4a5a6a7a8a9a:a;a<a=a>a?a@aAaBaCaDaEaFaGaHaIaJaKaLaMaNaOaPaQaRaSaTaUaVaWaXaYaZa[a\a]a^a_a`aaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayaza{a|a}a~aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb b b b b bbbbbbbbbbbbbbbbbbb b!b"b#b$b%b&b'b(b)b*b+b,b-b.b/b0b1b2b3b4b5b6b7c8c9c:c;c<c=c>c?c@cAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc[c\c]c^c_c`cacbcccdcecfcgchcicjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~dddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeefffffffffffffffffffffffffffffggggggggggggggggggghhhhhhhhhhhhhhhhhhhhhhhhhhhhhh h h h h hhhhhhhhhhhhhhhhhhh h!h"h#h$h%h&h'h(h)h*h+h,h-h.h/h0h1h2h3h4h5h6h7h8h9h:h;h<h=h>h?h@hAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQiRiSiTiUiViWiXiYiZi[i\i]i^i_i`iaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizi{i|i}i~iiijjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkklllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll l l l l lllllllllllllllllll l!l"l#l$l%l&l'l(l)l*l+l,l-l.l/l0l1l2l3l4l5l6l7l8l9l:l;l<l=l>l?l@lAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl[l\l]l^l_l`lalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzl{l|l}l~mmmnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnooooo o o o o ooooooooooooooooooo o!o"o#o$o%o&o'o(o)o*o+o,o-o.o/o0o1o2o3o4o5o6p7p8p9p:p;p<p=p>p?p@pApBpCpDpEpFpGpHpIpJpKpLpMpNpOpPpQpRpSpTpUqVqWqXqYqZq[q\q]q^q_q`qaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzq{q|q}q~qqrrrrrrrrrrrrrrrrrrrrrrrssssttttttttttttttttttttuuuuuuuuuuuuuuuvvwwwwwwwwwwwwwwwwwxxxyyyyyzzzzzzzzzzzzz{{{{{{{{{{{{wwxx||||||||||||||||||| | | | | ||||||||||||||||||| |!|"|#|$|%|&|'|(|)|*|+|,|-|.|/|0|1|2|3|4|5|6|7|8|9|:|;|<|=|>|?|@|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|[|\|]|^|_|`|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|{|||}|~||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| | | | | ||||||||||||||||||| |!|"|#|$|%|&|'|(|)|*|+|,|-|.|/|0|1|2|3|4|5|6|7|8|9|:|;|<|=|>|?|@|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|[|\|]|^|_|`|a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v}w}x}y}z}{}|}}}~}~~~~~~~~~~~~~~~~~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;V<V=V>V?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;V<V=V>V?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;V<V=V>V?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;V<V=V>V?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V !V "V #V $V %V &V 'V (V )V *V +V ,V -V .V /V 0V 1V 2V 3V 4V 5V 6V 7V 8V 9V :V ;V <V =V >V ?V @V AV BV CV DV EV FV GV HV IV JV KV LV MV NV OV PV QV RV SV TV UV VV WV XV YV ZV [V \V ]V ^V _V `V aV bV cV dV eV fV gV hV iV jV kV lV mV nV oV pV qV rV sV tV uV vV wV xV yV zV {V |V }V ~V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V V !!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"j"k"l"m"n"o"p"q"r"s"t"u"v"w"x"y"z"{"|"}"~"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""########## # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~#################################################################################################################################$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''' ' ' ' ' ''''''''''''''''''' '!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((()))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%)&)')()))*)+),)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)k)l)m)n)o)p)q)r)s)t)u)v)w)x)y)z){)|)})~)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********** * * * * ******************* *!*"*#*$*%*&*'*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*:*;*<*=*>*?*@*A*B*C*D*E*F*G*H*I*J*K*L*M*N*O*P*Q*R*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|*}*~*********************************************************************************************************************************++++++++++ + + + + +++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++,,,,,,,,,, , , , , ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , - - - - - - - - - -  -  -  -  -  - - - - - - - - - - - - - - - - - - -  -! -" -# -$ -% -& -' -( -) -* -+ -, -- -. -/ -0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -: -; -< -= -> -? -@ -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -Z -[ -\ -] -^ -_ -` -a -b -c -d -e -f -g -h -i-j-k-l-m-n-o-p-q-r-s-t-u-v-w-x-y-z-{-|-}-~---------------------------------------------------------------------------------------------------------------------------------.......... . . . . ................... .!.".#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.7.8.9.:.;.<.=.>.?.@.A.B.C.D.E.F.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.X.Y.Z.[.\.].^._.`.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.r.s.t.u.v.w.x.y.z.{.|.}.~.................................................................................................................................////////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/1/2/3/4/5/6/7/8/9/:/;/</=/>/?/@/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////////////// / / / / / / / / / / / / / / / / / / / / / / /////////////////////////////////////!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/!/"/"/"/"/"0"0"0#0$0%0%0%0%0%0 %0 %0 %0 %0 %0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0%0 %0!%0"%0#%0$%0%%0&%0'%0(%0)%0*%0+%0,%0-%0.%0/%00%01%02%03%04%05%06%07%08%09%0:%0;%0<%0=%0>%0?%0@%0A%0B%0C%0D%0E%0F%0G%0H%0I%0J%0K%0L%0M%0N%0O%0P%0Q%0R0S0T0U0V0W0X0Y0Z0[0\0]0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~000000000000&0&0&0&0&0&0&0&0&0&0&0&0'0'0(0(0)0)0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0*0+0,0,0,0,0,0,0,0,1-1-1-1-1-1-1-1-1-1 -1 -1 -1 -1 -1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1-1 -1!-1"-1#-1$-1%-1&-1'-1(-1)-1*-1+-1,-1--1.-1/-10-11-12-13-14-15-16-17-18-19-1:.1;.1<.1=.1>.1?.1@.1A.1B.1C.1D.1E.1F.1G.1H.1I.1J.1K.1L.1M.1N.1O.1P.1Q.1R.1S.1T.1U/1V/1W/1X/1Y/1Z/1[/1\/1]/1^01_01`01a01b01c01d01e01f01g01h01i01j01k01l01m01n01o01p01q01r11s11t11u11v11w11x11y11z11{11|11}11~11111111111111111111112121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212121212131414141414141414141414141414141414141414141414141414141515151515151515151516161616161717171717171717181818181818181111111111112222222222 2 2 2 2 2222222222222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~222222222222222222222222222292:2:2:2:2:2:2;22222222222222222222222222222222222222222222222222222222<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<2<3<3<3<3<3<3=3=3=3=3 =3 =3 =3 =3 =3=3=A Safe"#$,.14568=>?@ACEPSX_`mfAgda Content of a  .agda-lib file.hAgda!The symbolic name of the library.iAgda Path to this  .agda-lib file (not content of the file).jAgda3Roots where to look for the modules of the library.kAgda Dependencies.lAgdaA symbolic library name.mAgdaThe special name "."S is used to indicated that the current directory should count as a project root. fgkjihlmn lmfgkjihn None"#$,.14568=>?@ACEPSX_`5pAgdaIn a> and ?@M we want to know whether we are allowed to insert unicode characters or not.pqrspqrs Safe"#$,.14568=>?@ACEPSX_` $AgdaBuiltins that come without a definition in Agda syntax. These are giving names to Agda internal concepts which cannot be assigned an Agda type.,An example would be a user-defined name for Set.{- BUILTIN TYPE Type -} The type of Type would be Type : Level ! Set which is not valid Agda.tuvwxyz{|}~      !"#$%tuvwxyz{|}~      !"#$% Safe"#$,.14568=>?@ACEPSX_`&AgdaICut off structural order comparison at some depth in termination checker?'Agdac >= 0( means: record decrease up to including c+1.&('&(' Safe"#$,.14568=>?@ACEPSX_`,Agda Semirings..Agda Addition./AgdaMultiplication.0AgdaWZero. The one is never used in matrix multiplication , one :: a -- ^ One.1AgdaHasZero is needed for sparse matrices, to tell which is the element that does not have to be stored. It is a cut-down version of SemiRing, which is definable without the implicit ?cutoff.5AgdaThe standard semiring on 3s.6AgdaThe standard semiring on 3s.7AgdaThe standard semiring on 3s. ,-0/.12345 12,-0/.345Safe"#$,.14568=>?@ACEPSX_`9AgdaA constant term.:AgdaA term with one hole.;Agda%A term with many holes (error value).8;:98;:9None"#$,.124568=>?@ACEMPSX_`F >AgdaFinite bijective map from a to b. There, and back again.BAgdaLookup. O(log n).CAgdaInverse lookup. O(log n).DAgdaEmpty bimap. O(1).EAgdaSingleton bimap. O(1).FAgda=Insert. Overwrites existing value if present. O(Map.insert).GAgda Left-biased Union. O(Map.union).HAgdaConstruct from a list of pairs.KDoes not check for actual bijectivity of constructed finite map. O(n log n)IAgdaATurn into list, sorted ascendingly by first value. O(Map.toList) >?A@BCDEFGHI >?A@BCDEFGHISafe"#$,.14568=>?@ACEPSX_`DMAgdaUnicode characters are divided into letters, numbers, marks, punctuation, symbols, separators (including spaces) and others (including control characters).These are the tests that AB offers:^AgdaConvert a character in '0'..'9' into the corresponding digit 0..9._AgdaConvert a character in '0'..'9','A'..'F','a'..'f'! into the corresponding digit 0..15.`AgdaConvert a character in '0'..'7' into the corresponding digit 0..7.aAgda,Test names paired with their implementation.bAgda+Find out which tests a character satisfies.M]\[ZYXWVUTSRQPON^_`ab^_`M]\[ZYXWVUTSRQPONabSafe"#$,.14568=>?@ACEPSX_`8fAgda Loop while we have an exception.gAgdaMonadic version of 3$ with a different argument ordering.hAgda3 is a bifunctor.iAgda'Either _ b' is a functor.jAgda'Either a' is a functor.kAgda3 is bitraversable.lAgdaReturns 3 iff the argument is 3 x for some x. Note: from base >= 4.7.0.0 already present in  Data.Either.mAgdaReturns 3 iff the argument is 3 x for some x. Note: from base >= 4.7.0.0 already present in  Data.Either.nAgda Analogue of CD.oAgda Analogue of CD.pAgda Analogue of 'E.qAgda Analogue of 'E.rAgdaSafe projection from 3. 8maybeLeft (Left a) = Just a maybeLeft Right{} = NothingsAgdaSafe projection from 3. <maybeRight (Right b) = Just b maybeRight Left{} = NothingtAgdaReturns 3 input_with_tags_stripped if all elements are to the 3, and otherwise 3.uAgdaReturns 3 input_with_tags_stripped2 if all elements are to the right, and otherwise 3. d allRight xs == if all isRight xs then Just (map ((Right x) -> x) xs) else Nothing vAgdaConvert 3 to 3 ().fghijklmnopqrstuvfghijklmnopqrstuvSafe"#$,.14568=>?@ACEPSX_`wwSafe"#$,.14568=>?@ACEPSX_`@zAgdaaError class for backward compatibility (from Control.Monad.Trans.Error in transformers 0.3.0.0).}AgdaAWe cannot define data constructors synonymous, so we define the  mkExceptT6 function to be used instead of the data constructor ExceptT.~Agda#A string can be thrown as an error.  !"z{|} z{|"} !None"#$,.14568=>?@ACEPSX_`Safe"#$,.14568=>?@ACEPSX_`AgdaRepeat a state transition f :: a -> (b, a) with output b while condition condY on the output is true. Return all intermediate results and the final result where cond is False.(Postconditions (when it terminates): (fst (last (iterWhile cond f a)) == False. $all fst (init (interWhile cond f a)).AgdaRepeat something while a condition on some state is true. Return the last state (including the changes of the last transition, even if the condition became false then).AgdaMonadic version of .Agda%A version of the trampoline function.The usual function iterates f :: a -> Maybe a as long as Just{}, is returned, and returns the last value of a upon Nothing.IusualTrampoline f = trampolineWhile $ a -> maybe (False,a) (True,) (f a).trampolineWhile is very similar to  repeatWhileA, only that it discards the state on which the condition went False;, and returns the last state on which the condition was True.AgdaMonadic version of .AgdaUMore general trampoline, which allows some final computation from iteration state a into result type b.AgdaMonadic version of .AgdaIteration to fixed-point.iterateUntil r f a0 iterates endofunction f, starting with a0 , until r( relates its result to its input, i.e., f a r a.9This is the generic pattern behind saturation algorithms.If f is monotone with regard to r , meaning a r b implies f a r f b , and f-chains starting with a09 are finite then iteration is guaranteed to terminate.*A typical instance will work on sets, and r could be set inclusion, and a0 the empty set, and f- the step function of a saturation algorithm.AgdaMonadic version of .Agda n f x applies f to x n times and returns the result.)The applications are calculated strictly.AgdaapplyWhen b f a applies f to a when b.AgdaapplyUnless b f a applies f to a unless b.AgdaMonadic version of  applyWhenAgdaMonadic version of  applyUnlessNone"#$,.14568=>?@ACEPSX_` AgdaSemiring with idempotent 3 == dioidAgdaE.g. +Agdaneutral element of compose , e.g. zeroSafe"#$,.14568=>?@ACEPSX_`$ Agda?A decoration is a functor that is traversable into any functor.The 3S superclass is given because of the limitations of the Haskell class system.  traverseF actually implies functoriality.Minimal complete definition:  traverseF or  distributeF.Agda traverseF is the defining property.Agda%Decorations commute into any functor.Agda?Composition: pure function after functorial (monadic) function.AgdaThe true pure for loop. FG is a misnomer, it should be forA.Agda#Any decoration is traversable with traverse = traverseF. Just like any 36 is a functor, so is any decoration, given by just  traverseF , a functor.AgdaAny decoration is a lens. set is a special case of dmap.Agda0A typical decoration is pairing with some stuff.Agda3Decorations compose. (Thus, they form a category.)Agda%The identity functor is a decoration.    9 Safe"#$%,.14568=>?@ACEPSX_`Agdatopoligical sort with smallest-numbered available vertex first | input: nodes, edges | output is Nothing if the graph is not a DAGHSafe"#$,.14568=>?@ACEPSX_`*333 3!3"3#3$3%3&3'3(3)3*3+3,3-3.3/303132333435363738393:3;3<3=3>3?3@3A3B3C3D3E3F3GSafe"#$,.14568=>?@ACEPSX_`!AAgda7Unstructured pragma (Andreas, 2017-08-23, issue #2712).YYSafe"#$,.14568=>?@ACEPSX_`&AgdaCatch 3Hs.Agda+Upon exception, the written output is lost.Agda Alias of 3I for the IO monad.Safe"#$,.14568=>?@ACEPSX_`(AgdaAReturns a close function for the file together with the contents.Safe"#$,.14568=>?@ACEPSX_`5'3JAgdaaConverts many character sequences which may be interpreted as line or paragraph separators into '\n'. Note that '\r\n'. is assumed to have already been converted to '\n'.AgdaReads a UTF8-encoded text file and converts many character sequences which may be interpreted as line or paragraph separators into '\n'.AgdaWrites UTF8-encoded text to the handle, which should be opened for writing and in text mode. The native convention for line endings is used.PThe handle's text encoding is not necessarily preserved, it is changed to UTF8.AgdaQWrites a UTF8-encoded text file. The native convention for line endings is used.AgdaQWrites a UTF8-encoded text file. The native convention for line endings is used.Safe"#$,.14568=>?@ACEPSX_`7kAgdaECreates a temporary file, writes some stuff, and returns the filepathSafe"#$,.14568=>?@ACEPSX_`9T AgdaRead 3K+, modify it strictly, and return old value. 3L3M3N3O3P3Q3R3S3T3K  Safe"#$,.124568=>?@ACEPSX_`D!Agdaz"Impossible" errors, annotated with a file name and a line number corresponding to the source code location of the error."Agda7We reached a program point which should be unreachable.#Agda Impossible with a different error message. Used when we reach a program point which can in principle be reached, but not for a certain run.$Agda`We reached a program point without all the required primitives or BUILTIN to proceed forward. !MissingDefinitions needed forthis%AgdanAbort by throwing an "impossible" error. You should not use this function directly. Instead use the macro in  undefined.h.&Agda)Catch an "impossible" error, if possible.!$#"%&!$#"%&Safe"#$,.124568=>?@ACEPSX_`Kp+AgdatoImpossible e extracts the  Impossible value raised via !(throwImpossible (Impossible "srcfullAgdaUtilsEmpty.hs" 33)) to create the element e of type Empty. It proceeds by evaluating e^ to weak head normal form and catching the exception. We are forced to wrap things in a Maybe because of catchImpossible's type.)*+)*+Safe"#$,.14568=>?@ACEPSX_`Y0AgdaYA set with duplicates. Faithfully stores elements which are equal with regard to (==).2Agda%The list contains all occurrences of aN (not just the duplicates!). Hence, the invariant: the list is never empty.3AgdaIs the bag empty?4Agda7Number of elements in the bag. Duplicates count. O(n).5Agda (bag ! a) finds all elements equal to a(. O(log n). Total function, returns [] if none are.6Agda O(log n).7Agda O(log n).8AgdaCReturn the multiplicity of the given element. O(log n + count _ _).9AgdaO(1):AgdaO(1)=Agda "insert a b = union b (singleton a)>Agda !fromList = unions . map singleton?Agda:Returns the elements of the bag, grouped by equality (==).@Agda!Returns the bag, with duplicates.AAgda#Returns the bag without duplicates.BAgda!Returns the bag, with duplicates.0123456789:;<=>?@ABCDE0123456789:;<=>?@ABCDE Safe"#$,.14568=>?@ACEPSX_`ZLL!None"#$,.14568=>?@ACEMPSX_`iAgdaAgsy's meta variables.aE the type of the metavariable (what it can be instantiated with). blk= the search control information (e.g. the scope of the meta).Agda~Maybe an instantiation (refinement). It is usually shallow, i.e., just one construct(or) with arguments again being metas.AgdaRDoes this meta block a principal constraint (i.e., a type-checking constraint).Agda:List of observers, i.e., constraints blocked by this meta.Agda4Used for experiments with independence of subproofs.Agda Experimental.AgdaResult of type-checking.AgdaSuccess.AgdaDefinite failure.Agda Experimental.Agda$Parallel conjunction of constraints.AgdaExperimental, related to . First arg is sidecondition.AgdalForking proof on something that is not part of the term language. E.g. whether a term will reduce or not.Agda Obsolete.qMONPQRTSUXWVY\[Z]^_`abcdegfhijklmnopqsrtuyxwvz{~}|qz{~}|tuyxwvqsropnklmhijdegfbca^_`]Y\[ZUXWVRTSQPMON"Safe"#$,.14568=>?@ACEPSX_`v AgdaRRepresents a set of integers. Invariants: - All cannot be the argument to 3U or 3V - at most one  IntsBelow - at most one  IntsAbove - if `Below lo` and `Below hi`, then `lo < hi` - if `Below lo .. (Some xs)` then `all (> lo) xs` - if `Above hi .. (Some xs)` then `all (< hi - 1) xs`Agda MembershipAgdaAll integers `< n`AgdaAll integers `>= n`AgdaA single integer.3WAgdaFrom a list of integers.Agda No integers.Agda All integers.Agda'If finite, return the list of elements.Agda Invariant.  #Safe"#$,.14568=>?@ACEPSX_`\ AgdaGVan Laarhoven style homogeneous lenses. Mnemoic: "Lens inner outer".AgdaGet inner part i of structure o as designated by  Lens' i o.AgdaSet inner part i of structure o as designated by  Lens' i o.AgdaModify inner part i of structure o using a function i -> i.Agda8Focus on a part of the state for a stateful computation.AgdaRead a part of the state.AgdaWrite a part of the state.AgdaModify a part of the state.Agda'Modify a part of the state monadically.Agda?Modify a part of the state monadically, and return some result.Agda#Modify a part of the state locally.Agda Ask for part of read-only state.Agda/Modify a part of the state in a subcomputation.  84444$Safe "#$&',-.14568=>?@ACEHPSUVX_` Agda An index into a type-level list.Agda4Lists indexed by a type-level list. A value of type All p [x ..x ]% is a sequence of values of types p x , .., p x .Agda&Existential wrapper for indexed types.AgdaUnpacking a wrapped value.Agda/Constructing an indexed list from a plain list.Agda/Turning an indexed list back into a plain list.Agda!Indices are just natural numbers.AgdaMapping over an indexed list.Agda>If you have an index you can get a lens for the given element.Agda)Looking up an element in an indexed list.Agda!All indices into an indexed list.%Safe"#$,.14568=>?@ACEPSX_`AgdaTokenising the input (makes ! cleaner)Agda*Options for Auto, default value and lenses$      !$      !&Safe"#$,.14568=>?@ACEPSX_`'AgdaC(View source:) This is how you implement a lens for a record field.#$&%'(#$&%'('Safe"#$,.14568=>?@ACEPSX_`))AgdaRetain object when tag is 3.*Agda unionWith for collections of size <= 1.+Agda Unzipping a list of length <= 1.,AgdaFiltering a singleton list. filterMaybe p a = 3X (3Y p [a])-Agda Version of 3Z" with different argument ordering..Agda Version of 3[B with different argument ordering. Often, we want to case on a 3%, do something interesting in the 3( case, but only a default action in the 3* case. Then, the argument ordering of  caseMaybe is preferable. $caseMaybe m d f = flip (maybe d) m f/Agda. with flipped branches.0AgdaMonadic version of 3[.1AgdaMonadic version of 3\.2AgdaMonadic version of .. That is, 0$ with a different argument ordering.3Agda2 with flipped branches.4AgdaA more telling name for IJ for the 3 collection type. Or: . without the 3 case.5Agda. without the 3 case.6Agda2 without the 3 case.7Agda2 without the 3 case.8AgdaLazy version of allJust  . sequence. (allJust = mapM for the Maybe/ monad.) Only executes monadic effect while isJust.3333Z3]3X3^3\3_3`3a3[)*+,-./012345678)*+,-./012345678(Safe"#$,.14568=>?@ACEPSX_`9Agda.Lazy monadic computation of a list of results.<AgdaBoilerplate function to lift 3b through the 9 transformer.=AgdaThe empty lazy list.>AgdaConsing a value to a lazy list.?AgdaSingleton lazy list.@Agda Case distinction over lazy list.AAgda+Folding a lazy list, effects left-to-right.BAgdaThe join operation of the ListT m monad.CAgdaWe can `run' a computation of a 9 as it is monadic itself.DAgda Monadic cons.EAgdaMonadic singleton.FAgda Extending a monadic function to 9.GAgda!Alternative implementation using A.HAgda Change from one monad to another9:;<=>?@ABCDEFGH9:;<=>?@ABCDEFGH)Safe"#$,.14568=>?@ACEPSX_`TAgdaThe  WarningNamee data enumeration is meant to have a one-to-one correspondance to existing warnings in the codebase.AgdaA  WarningMode has two components: a set of warnings to be displayed and a flag stating whether warnings should be turned into fatal errors.AgdaThe defaultWarningModeY is a curated set of warnings covering non-fatal errors and disabling style-related onesAgdawarningModeUpdate str computes the action of str over the current  WarningModeu: it may reset the set of warnings, add or remove a specific flag or demand that any warning be turned into an errorAgdaCommon sets of warningsAgdalThe flag corresponding to a warning is precisely the name of the constructor minus the trailing underscore.Agda warningUsage generated using warningNameDescription3cAgda WarningNameZ descriptions used for generating usage information Leave String empty to skip that name.PT|cdUg{h}VWXYZ[\]^_`abefijklmnopqrstuvwxyz~PT|cdUg{h}VWXYZ[\]^_`abefijklmnopqrstuvwxyz~*Safe"#$,.14568=>?@ACEPSX_`3dAgdaZList of Help Topics NOTA BENE: You need to add each new topic together with its name to  allHelpTopicsAgdaInterface to the help functionAgdaGeneral usage informationAgda)Specialised usage information about TOPICAgdaUsage information generationAgdaConversion functions to strings+None"#$,.14568=>?@ACEPSX_`Agda"Simple, non-reentrant memoisation.AgdaRRecursive memoisation, second argument is the value you get on recursive calls.,None"#$,.14568=>?@ACEMPSX_`Agda/Maximum of on-negative (small) natural numbers.-Safe"#$,.124568=>?@ACEPSX_` Agda0Implementing conversion to list manually, since Foldable.toList; might recurse over the tail and, thus, destroy sharing.AgdaConverting a list (safe).AgdaPrepending an element.AgdaReturns the union of the argument lists seen as sets. The order of the elements in the result is not specified. Precondition: arguments contain no duplicates.AgdaZip two nonempty lists.AgdaZip two nonempty lists.Agda9Case on a list, getting a nonempty list in the cons case.AgdaCase on a list, with list last.Agda)Check if an element is present in a list.  5.Safe"#$,.14568=>?@ACEPSX_`Agda Satisfying null empty == True.AgdaA 3 is ' when it corresponds to the empty list.  Safe"#$,.1245678=>?@ACEPSX_`Agda Analogous to KL in  Data.Maybe.Agda Analogous to KM in  Data.Maybe.Agda Analogous to KN in  Data.Maybe.Agda Analogous to KO in  Data.Maybe.Agda unionWith for collections of size <= 1.Agda Unzipping a list of length <= 1.AgdaFiltering a singleton list. filterMaybe p a =  (3Y p [a])Agda Version of " with different argument ordering.Agda Version of ]B with different argument ordering. Often, we want to case on a d%, do something interesting in the b( case, but only a default action in the c* case. Then, the argument ordering of  caseMaybe is preferable. (caseMaybe m err f = flip (maybe err) m fAgdaMonadic version of ].AgdaMonadic version of ^.AgdaMonadic version of . That is, $ with a different argument ordering.Agda with flipped branches.AgdaA more telling name for IP for the d collection type. Or:  without the c case.Agda without the c case.]^_`adcb]^_`adcb/None"#$,.14568=>?@ACEFPSX_`\!AgdaGRun a parser on a list of tokens. Returns the list of complete matches.AgdaLConsumes and returns the next character. Fails if there is no input left.AgdaPLook-ahead: returns the part of the input that is left, without consuming it.Agda Always fails.AgdaSymmetric choice.Agda}Local, exclusive, left-biased choice: If left parser locally produces any result at all, then right parser is not used.AgdazTransforms a parser into one that does the same, but in addition returns the exact characters read. IMPORTANT NOTE: ] gives a runtime error if its first argument is built using any occurrences of readS_to_P.AgdaTConsumes and returns the next character, if it satisfies the specified predicate.Agda+Parses and returns the specified character.Agda(Parses and returns the specified string.AgdaBParses the first zero or more characters satisfying the predicate.AgdaAParses the first one or more characters satisfying the predicate.Agda+Combines all parsers in the specified list.AgdaSkips all whitespace.Agda count n p parses n occurrences of p/ in sequence. A list of results is returned.Agdabetween open close p parses open, followed by p and finally close. Only the value of p is returned.Agda option x p will either parse p or return x without consuming any input. Agda optional p optionally parses p and always returns ().!Agda4Parses zero or more occurrences of the given parser."Agda3Parses one or more occurrences of the given parser.#AgdaLike !, but discards the result.$AgdaLike ", but discards the result.%Agda sepBy p sep$ parses zero or more occurrences of p, separated by sep*. Returns a list of values returned by p.&Agda sepBy1 p sep# parses one or more occurrences of p, separated by sep*. Returns a list of values returned by p.'Agda endBy p sep$ parses zero or more occurrences of p, separated and ended by sep.(Agda endBy p sep# parses one or more occurrences of p, separated and ended by sep.)Agda chainr p op x$ parses zero or more occurrences of p, separated by op#. Returns a value produced by a right9 associative application of all functions returned by op!. If there are no occurrences of p, x is returned.*Agda chainl p op x$ parses zero or more occurrences of p, separated by op#. Returns a value produced by a left9 associative application of all functions returned by op!. If there are no occurrences of p, x is returned.+AgdaLike )(, but parses one or more occurrences of p.,AgdaLike *(, but parses one or more occurrences of p.-AgdamanyTill p end$ parses zero or more occurrences of p, until end3 succeeds. Returns a list of values returned by p.3eAgdahConverts a parser into a Haskell ReadS-style function. This is the main way in which you can "run" a " parser: the expanded type is 1 readP_to_S :: ReadP a -> String -> [(a,String)] 3fAgdaConverts a Haskell ReadS-style function into a parser. Warning: This introduces local backtracking in the resulting parser, and therefore a possible inefficiency.! !"#$%&'()*+,-.!. !"#$%&'()*,+-550Safe"#$,.14568=>?@ACEPSX_`:9AgdaInclusion comparison wrapper.<AgdaPointwise comparison wrapper.?AgdaDecidable partial orderings.BAgda6The result of comparing two things (of the same type).CAgda Less than.DAgdaLess or equal than.EAgdaEqualFAgdaGreater or equal.GAgda Greater than.HAgdaNo information (incomparable).IAgda8Comparing the information content of two elements of B'. More precise information is smaller.Includes equality: x I x == True.JAgda Opposites.related a po b iff related b (oppPO po) a.KAgdarCombining two pieces of information (picking the least information). Used for the dominance ordering on tuples.orPO1 is associative, commutative, and idempotent. orPO has dominant element POAny, but no neutral element.LAgdaChains (transitivity)  x R y S z.seqPO1 is associative, commutative, and idempotent. seqPO has dominant element POAny and neutral element (unit) POEQ.MAgdaEmbed 3g.NAgda%Represent a non-empty disjunction of 3gs as B.OAgdaA B! information is a disjunction of 3g informations.PAgdaAny 3h is a ?.QAgda+Are two elements related in a specific way? related a o b holds iff comparable a b is contained in o.SAgda1Partial ordering forms a monoid under sequencing.TAgda.Less is ``less general'' (i.e., more precise).UAgda&Pointwise partial ordering for tuples.related (x1,x2) o (y1,y2) iff related x1 o x2 and related y1 o y2.VAgda$Partial ordering for disjoint sums: Left _ and Right _ are unrelated.WAgda3 and 3 _ are unrelated.Partial ordering for Maybe a is the same as for  Either () a.[Agda4The pointwise ordering for lists of the same length.qThere are other partial orderings for lists, e.g., prefix, sublist, subset, lexicographic, simultaneous order.\Agda(Sets are partially ordered by inclusion.]AgdaSublist for ordered lists.9:;<=>?@ABHGFEDCIJKLMNOPQBHGFEDCIJKLMNOA?@PQ<=>9:;1Safe"#$,.14568=>?@ACEPSX_`DiAgda?Completing POMonoids with inverses to form a Galois connection.BLaw: composition and inverse composition form a Galois connection. & related (inverseCompose p x) POLE y  == related x POLE (p <> y) kAgdaPartially ordered monoid."Law: composition must be monotone. P related x POLE x' && related y POLE y' ==> related (x <> y) POLE (x' <> y') lAgdaPartially ordered semigroup."Law: composition must be monotone. P related x POLE x' && related y POLE y' ==> related (x <> y) POLE (x' <> y') ijkllkij2None"#$,.124568=>?@ACEPSX_`HrAgdaIf f a contains many copies of a they will all be the same pointer in the result. If the function is well-behaved (i.e. preserves the implicit equivalence, this shouldn't matter).mnopqrmnoqprSafe"#$,.14568=>?@ACEPSX_`U}AgdaWhile 3i- is for rendering data in Haskell syntax, }L is for displaying data to the world, i.e., the user and the environment.BAtomic data has no inner document structure, so just implement ~ as pretty a = text $ ... a ....AgdaUse instead of 3j when printing to world.Agda+Comma separated list, without the brackets.AgdaApply 6 to O if boolean is true.Agdaalign max rows lays out the elements of rowsp in two columns, with the second components aligned. The alignment column of the second components is at most max2 characters to the right of the left-most column.Precondition: max > 0.Agda?Handles strings with newlines properly (preserving indentation)Agda a  ? b = hang a 2 bAgda pshow = text . prettyG#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPRQWVUTS\[ZYX}~G}~#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPRQWVUTS\[ZYX63Safe"#$,.14568=>?@ACEPSX_`yP3kAgdamThe extended parser type computes one top-level document, plus one document per encountered memoisation key.3u is used to mark that a given memoisation key has been seen, but that no corresponding document has yet been stored.Agda(Documents paired with precedence levels.Agda@An extended parser type, with some support for printing parsers.3lAgdaInvariant: If the boolean is 3, then the result must be 3 something, and if the boolean is 3m, then the result must be 3 something.AgdaRuns the parser.Agda&Tries to print the parser, or returns 3nF, depending on the implementation. This function might not terminate.AgdaOParses a token satisfying the given predicate. The computed value is returned.Agda[Uses the given function to modify the printed representation (if any) of the given parser.AgdaMemoises the given parser./Every memoised parser must be annotated with a uniqueJ key. (Parametrised parsers must use distinct keys for distinct inputs.)AgdaAMemoises the given parser, but only if printing, not if parsing./Every memoised parser must be annotated with a uniqueJ key. (Parametrised parsers must use distinct keys for distinct inputs.)AgdaThe parser type.The parameters of the type Parser k r tok a have the following meanings: kType used for memoisation keys.rTThe type of memoised values. (Yes, all memoised values have to have the same type.)tokThe token type.aThe result type.3oAgdaMemoised values.3pAgdaContinuations.3qAgdaState monad used by the parser.3rAgda Positions.AgdauUses the given document as the printed representation of the given parser. The document's precedence is taken to be .Agda.Parses a token satisfying the given predicate.AgdaParses a single token.AgdaParses a given token.AgdaPrecedence of >>=.AgdaPrecedence of  |.AgdaPrecedence of  *.AgdaPrecedence of " and +.AgdaPrecedence of atoms.3sAgdaA smart constructor.3tAgdaExtracts the parser.3uAgdaExtracts the documents.3vAgdaA helper function.3wAgda Pretty-prints a memoisation key.3xAgdaA helper function.4None"#$,.14568=>?@ACEMPSX_`Agda4The flexibe variables contained in a pice of syntax.Agda2The rigid variables contained in a pice of syntax.Agda)Make offsets non-negative by rounding up.AgdaOffsets + n must be non-negativeAgdaExecuting a substitution.Agda@Partial substitution from flexible variables to size expression.Agda*Type of solution wanted for each flexible.Agda,Assigning a polarity to a flexible variable.Agda)What type of solution are we looking for?Agda<Constraint: an inequation between size expressions, e.g. X < " or  i + 3 "d j.Agda.Comparison operator, e.g. for size expression.Agda<.Agda"d.Agda*Size expressions appearing in constraints.AgdaConstant number n.AgdaVariable plus offset i + n.Agda Infinity ".AgdaMeta variable X + n.AgdaSize meta variables X to solve for.AgdaFixed size variables i.AgdaConstant finite sizes n >= 0.AgdaDefault polarity is .Agda?Returns an error message if we have a contradictory constraint.Agda acts as 3,  as 3m.Agda Interpret  as relation on .AgdaAdd offset to size expression.AgdaComparison operator is ordered  < .555Safe"#$,.14568=>?@ACEPSX_`q#AgdaStar semirings ( 5https://en.wikipedia.org/wiki/Semiring#Star_semirings).%Agda Semirings ( &https://en.wikipedia.org/wiki/Semiring).#$%)('&%)('&#$6None"#$,.14568=>?@ACEMPSX_`././7None"#$,.14568=>?@ACEPSX_`:AgdaCharacteristic identifiers.;AgdaGiven a function f :: a -> NonemptyList C6 which returns a non-empty list of characteristics C of a, partition a list of as into groups such that each element in a group shares at least one characteristic with at least one other element of the group.<AgdaPartition a list of a5s paired with a non-empty list of characteristics C into groups such that each element in a group shares at least one characteristic with at least one other element of the group.:;<:;<8Safe"#$,.14568=>?@ACEPSX_`Z=Agda^Thing decorated with its size. The thing should fit into main memory, thus, the size is an Int.AAgda,The size of a collection (i.e., its length).CAgdaCache the size of an object.MAgdaReturn the cached size.=>?@ABCAB=>?@C9None"#$,.14568=>?@ACEPSX_` NAgda&Classification of identifier variants.PAgdaIdentifier ends in Int many primes.QAgdaIdentifier ends in number Int (ordinary digits).RAgdaIdentifier ends in number Int (subscript digits).SAgda3Are we allowed to use unicode supscript characters?TAgda'Is the character one of the subscripts ' '-' '?UAgda Converts '0'-'9' to ' '-' '; unless the user doesn't want us to use unicode characters-Precondition: The digit needs to be in range.VAgda Converts ' '-' ' to '0'-'9'.-Precondition: The digit needs to be in range.WAgda?Increase the suffix by one. If no suffix yet, put a subscript 1.XAgda Parse suffix.YAgda Print suffix. NRPOQSTUVWXY STUVNRPOQWXY:Safe"#$,.14568=>?@ACEPSX_`ZAgdaDisjoint sum of three.^AgdaEnum type with 3 elements.bAgdaPartition a list into 3 groups.)Preserves the relative order or elements.cAgdaPartition a list into 3 groups.)Preserves the relative order or elements. Z]\[^a`_bcde ^a`_bZ]\[cde;None"#$,.14568=>?@ACEMPSX_`nAgdaFinite map from [k] to v.With the strict 3 type, n is also strict in v.3yAgda"Helper function used to implement p and q.pAgdaSingleton trie.qAgdaeveryPrefix k v! is a trie where every prefix of k (including k itself) is mapped to v.rAgdaLeft biased union.#union = unionWith ( new old -> new).sAgda/Pointwise union with merge function for values.tAgda.Insert. Overwrites existing value if present. %insert = insertWith ( new old -> new)uAgda6Insert with function merging new value with old value.vAgda.Delete value at key, but leave subtree intact.wAgda*Adjust value at key, leave subtree intact.xAgdaConvert to ascending list.yAgdaConvert to ascending list.zAgda]Convert to list where nodes at the same level are ordered according to the given ordering.{AgdaWCreate new values based on the entire subtrie. Almost, but not quite comonad extend.|Agda8Returns the value associated with the given key, if any.}Agda%Is the given key present in the trie?~Agda&Collect all values along a given path.Agda(Get the subtrie rooted at the given key.AgdaFilter a trie.Agda Key lens.Agda Empty trie.nopqrstuvwxyz{|}~nopqturswvxyz|}~{<None"#$,.14568=>?@ACEMPSX_`AgdaBifunctoriality for pairs.Agda mapFst f = f -*- idAgda mapSnd g = id -*- gAgdaLifted pairing.Agda)Swap. (Only in Data.Tuple from base-4.3)AgdaMonadic version of .AgdaMonadic .AgdaMonadic .23=None"#$,.14568=>?@ACEPSX_`Agda3Not very efficient (goes via a list), but it'll do.AgdaBig conjunction over a map.AgdaFilter a map based on the keys.Agda Unzip a map.  >None"#$,.14568=>?@ACEPSX_`-9Agda$Internal state for stripping suffix.AgdaError.Agda8"Negative string" to remove from end. List may be empty.Agda+"Positive string" (result). Non-empty list.AgdaPAppend a single element at the end. Time: O(length); use only on small lists.Agda4Case distinction for lists, with list first. Cf. .Q.Agda4Case distinction for lists, with list first. Cf. .Q.Agda+Case distinction for lists, with list last.AgdaHead function (safe).Agda=Head function (safe). Returns a default value on empty lists. >headWithDefault 42 [] = 42 headWithDefault 42 [1,2,3] = 1AgdaTail function (safe).Agda=Tail function (safe). Returns a default list on empty lists.AgdaLast element (safe).AgdaLast two elements (safe).Agda Drop from the end of a list. &dropEnd n = reverse . drop n . reverse$ (Forces the whole list even for n==0.)AgdaOpposite of cons (:), safe.AgdaMaybe cons. "mcons ma as = maybeToList ma ++ asAgda3z and 3{ in one go, safe.Agda init, safe.Agda!Lookup function (partially safe).AgdaYLookup function with default value for index out of range. The name is chosen akin to RS.AgdamFind an element satisfying a predicate and return it with its index. TODO: more efficient implementation!?AgdadownFrom n = [n-1,..1,0]Agda1Update the first element of a list, if it exists.Agda0Update the last element of a list, if it exists.AgdaOUpdate nth element of a list, if it exists. Precondition: the index is >= 0.AgdaA generalized version of  partition . (Cf. mapMaybe vs. filter).Agda@Split off the largest suffix whose elements satisfy a predicate.spanEnd p xs = (ys, zs) where  xs = ys ++ zs and all p zs and #maybe True (not . p) (lastMaybe yz).AgdaA generalized version of  takeWhile . (Cf. mapMaybe vs. filter).AgdaA generalized version of span.AgdaPartition a list into 3s and 3s. 3Z f = snd . partitionMaybe f.AgdaLike 3YS, but additionally return the last partition of the list where the predicate is False everywhere.AgdaLike 3Z^, but additionally return the last partition of the list where the function always returns Nothing.Agda=Drops from both lists simultaneously until one list is empty.AgdaSublist relation.AgdaOCheck if a list has a given prefix. If so, return the list minus the prefix.AgdastripSuffix suf xs = Just pre iff xs = pre ++ suf.Agda&stripReversedSuffix rsuf xs = Just pre iff xs = pre ++ reverse suf.AgdaFSplit a list into sublists. Generalisation of the prelude function words. words xs == wordsBy isSpace xsAgda+Chop up a list in chunks of a given length.AgdaFChop a list at the positions when the predicate holds. Contrary to , consecutive separator elements will result in an empty segment in the result. > intercalate [x] (chopWhen (== x) xs) == xsAgda-All ways of removing one element from a list.AgdaCheck whether a list is sorted.Assumes that the 3h% instance implements a partial order.AgdaUCheck whether all elements in a list are distinct from each other. Assumes that the 3|. instance stands for an equivalence relation.AgdaAn optimised version of ./Precondition: The list's length must fit in an 3.AgdaDChecks if all the elements in the list are equal. Assumes that the 3|- instance stands for an equivalence relation.AgdaZReturns an (arbitrary) representative for each list element that occurs more than once.Agda A variant of 3}3 which applies the predicate to consecutive pairs.Agda f = groupBy ((3~ ) `on` f) 3 3 (3 `on` f).Agda#splitExactlyAt n xs = Just (ys, zs) iff  xs = ys ++ zs and genericLength ys = n.AgdaA generalised variant of  elemIndex.Agda,Requires both lists to have the same length. Otherwise, Nothing is returned.AgdaLike 3S but keep the rest of the second list as-is (in case the second list is longer). D zipWithKeepRest f as bs == zipWith f as bs ++ drop (length as) bs AgdaEfficient variant of nubBy for finite lists.Specification: )nubOn f xs == 'nubBy' ((==) `'on'` f) xs.AgdaEfficient variant of nubBy for finite lists.Specification: For each list xs there is a list ys which is a permutation of xs such that *uniqOn f xs == 'nubBy' ((==) `'on'` f) ys. Furthermore :List.sortBy (compare `on` f) (uniqOn f xs) == uniqOn f xs.Agda'Compute the common suffix of two lists.Agda'Compute the common prefix of two lists.???None"#$,.14568=>?@ACEPSX_`%/ AgdaI adds double quotes around the string, replaces newline characters with nh, and escapes double quotes and backslashes within the string. This is different from the behaviour of 3j: > 3 $ 3j "\x2200" "\8704" > 3 $  "\x2200" """ V(The code examples above have been tested using version 4.2.0.0 of the base library.)AgdaGTurns the string into a Haskell string literal, avoiding escape codes.Agda$Adds hyphens around the given stringputStrLn $ delimiter "Title"<     Title                                                 AgdaShows a non-negative integer using the characters - instead of 0-9 unless the user explicitly asked us to not use any unicode characters.Agda1Adds a final newline if there is not already one.Agda-Indents every line the given number of steps.Agda6Show a number using comma to separate powers of 1,000.AgdaRemove leading whitespace.AgdaRemove trailing whitespace.Agda'Remove leading and trailing whitesapce.  @None"#$,.14568=>?@ACEMPSX_`)Agda"CPU time in pico (10^-12) seconds.Agda Timestamps.AgdaThe current time.AgdaOMeasure the time of a computation. Of course, does not work with exceptions.Agda(Print CPU time in milli (10^-3) seconds.ANone"#$,.124568=>?@ACEPSX_`L3AgdaLines with line numbers.3AgdaJHeader line, like a field name, e.g. "include :". Cannot be indented. String is trimmed.3Agda"Other line. Must be indented. String is trimmed.3Agda(Library file field format format [sic!].3AgdaName of the field.3AgdaIs it optional?3AgdaContent parser for this field.3AgdaSets parsed content in f structure.3AgdaE.g. field name. trimmed.3AgdaE.g. field content. trimmed.3AgdaIThe config files we parse have the generic structure of a sequence of field : content entries.AgdaLibrary Warnings.3AgdaParser monad: Can throw String error messages, and collects  LibWarning's library warnings.3Agda .agda-lib& file format with parsers and setters.AgdaParse  .agda-lib file.Sets iY name and turn mentioned include directories into absolute pathes (provided the given 3 is absolute).3AgdaParse file contents.3AgdaParse 3 with 3 descriptors.3AgdaGiven a list of 35 descriptors (with their custom parsers), parse a 3 into the f structure.LChecks mandatory fields are present; no duplicate fields, no unknown fields.3AgdaNEnsure that there are no duplicate fields and no mandatory fields are missing.3AgdaFind 3 with given 3, throw error if unknown.3AgdaExample:  parseGeneric "name:Main--BLAndepend:--BLAn standard-library--BLAninclude : . --BLAn src more-src n" == Right [("name",[MainE]),("depend",["standard-library"]),("include",[".","src more-src"])] 3AgdaParse line into 3 and 3 components.LPrecondition: line comments and trailing whitespace have been stripped away. Example file: V name: Main depend: standard-library include: . src more-src This should give ' [ Header 1 "name" , Content 1 Main , Header 2 "depend" , Content 3 "standard-library" , Header 4 "include" , Content 4 "." , Content 5 "src more-src" ] 3AgdaCollect 3 and subsequent 3s into 3.Tailing 3s? That's an error.Agda+Remove leading whitespace and line comment. Agda4Break a comma-separated string. Result strings are trimmed.3Agda-...and trailing, but not leading, whitespace.  BNone"#$,.14568=>?@ACEPSX_`Xj  AgdaSimple Emacs Lisp expressions.AgdaAtom.AgdaList.AgdaFormats a response command. Replaces '\n'= with spaces to ensure that each command is a single line.Agda-Writes a response command to standard output.3Agda0displayInBuffer buffername append header content displays content (with header header%) in some suitable way in the buffer  buffername. If append is Trueh, then the content is appended to previous content (if any), otherwise any previous content is deleted.3Agda$The name of the running info buffer.AgdaClear the running info buffer.AgdaClear the warning bufferAgdaADisplay running information about what the type-checker is up to.    None"#$,.14568=>?@ACEPSX_`tJAgda Binary bind.AgdaMonadic guard.AgdaMonadic if-then-else. Agda ifNotM mc = ifM (not  $ mc)!AgdaLazy monadic conjunction.$AgdaLazy monadic disjunction.'AgdaLazy monadic disjunction with Either> truth values. Returns the last error message if all fail.(AgdahLazy monadic disjunction with accumulation of errors in a monoid. Errors are discarded if we succeed.)AgdaGeneralized version of .mapM_ :: Monad m => (a -> m ()) -> [a] -> m ()n Executes effects and collects results in left-to-right order. Works best with left-associative monoids.!Note that there is an alternative !mapM' f t = foldr mappend mempty  $ mapM f tthat collects results in right-to-left order (effects still left-to-right). It might be preferable for right associative monoids.*AgdaGeneralized version of .forM_ :: Monad m => [a] -> (a -> m ()) -> m ()-AgdaA monadic version of 3Z :: (a -> Maybe b) -> [a] -> [b]..AgdaThe for version of -./AgdaA monadic version of 3 :: (a -> Bool) -> [a] -> [a].0AgdaA monadic version of  dropWhileEnd :: (a -> Bool) -> [a] -> m [a]:. Effects happen starting at the end of the list until p becomes false.1AgdaA `monadic' version of @ partition# :: (a -> Bool) -> [a] -> ([a],[a])2Agda Translates 3 to .3AgdaGeneralises the 3]& function from lists to an arbitrary .4AgdaFinally for the zF class. Errors in the finally part take precedence over prior errors.5AgdaTry a computation, return 3 if an z occurs.6Agda;Bracket without failure. Typically used to preserve state.7Agda Restore state after computation.6AgdaAcquires resource. Run first.AgdaReleases resource. Run last.Agda Computes result. Run in-between.&  !"#$%&'()*+,-./012345678& !"#$%&'()*+,-./012345678 CNone"#$,.124568=>?@ACEMPSX_`:Agda%Paths which are known to be absolute.Note that the 3| and 3hS instances do not check if different paths point to the same files or directories.<Agda Extract the : to be used as 3.=Agda Constructs :s.2Precondition: The path must be absolute and valid.3Agdamaps blablabla foo.bar.xxx to foo.bar.?AgdaMakes the path absolute.This function may raise an __IMPOSSIBLE__ error if 3" does not return an absolute path.@AgdaPTries to establish if the two file paths point to the same file (or directory).AAgdaCase-sensitive 3 for Windows.This is case-sensitive only on the file name part, not on the directory part. (Ideally, path components coming from module name components should be checked case-sensitively and the other path components should be checked case insensitively.):;<=>?@A:;<=?@A>@4DNone"#$,.14568=>?@ACEPSX_`KAgdaHashes a piece of 3.MAgda-Hashing a module name for unique identifiers.HIJKLMHIJKLMENone"#$,.14568=>?@ACEPSX_`>NAgda'Monad with access to benchmarking data.SAgdaEWe need to be able to terminate benchmarking in case of an exception.TAgdaqBenchmark structure is a trie, mapping accounts (phases and subphases) to CPU time spent on their performance.VAgdaAre we benchmarking at all?WAgda!What are we billing to currently?XAgda/The accounts and their accumulated timing bill.^Agda3Record when we started billing the current account._Agda(Account we can bill computation time to.aAgdaSemantic editor combinator.bAgdaSemantic editor combinator.cAgdaSemantic editor combinator.dAgda"Add to specified CPU time account.eAgdaTurn benchmarking on/off.fAgdacBill current account with time up to now. Switch to new account. Return old account (if any).gAgda.Resets the account and the timing information.hAgdafBill a computation to a specific account. Works even if the computation is aborted by an exception.iAgda;Bill a CPS function to an account. Can't handle exceptions.jAgda.Bill a pure computation to a specific account.kAgda2Print benchmark as three-column table with totals.lAgda$Initial benchmark structure (empty).fAgdaMaybe new account.AgdaMaybe old account.NRQPOSTUXWVY\Z[]^_`abcdefghij_^]Y\Z[`TUXWVabcdNRQPOSefghijFNone"#$,.1245678=>?@ACEMPSX_`7pAgda=Killing the range of an object sets all range information to .rAgda;If it is also possible to set the range, this is the class.Instances should satisfy u (s r x) == r.tAgda5Things that have a range are instances of this class.vAgda1Wrapper to indicate that range should be printed.yAgdaA range is a file name, plus a sequence of intervals, assumed to point to the given file. The intervals should be consecutive and separated.1Note the invariant which ranges have to satisfy: .~AgdaAn interval. The iEnd* position is not included in the interval.4Note the invariant which intervals have to satisfy: .Agda Represents a point in the input.If two positions have the same  and  components, then the final two components should be the same as well, but since this can be hard to enforce the program should not rely too much on the last two components; they are mainly there to improve error messages for the user.4Note the invariant which positions have to satisfy: .AgdaFile.AgdaPosition, counting from 1.AgdaLine number, counting from 1.AgdaColumn number, counting from 1.Agda Sets the  components of the interval.Agda Gets the P component of the interval. Because of the invariant, they are both the same.Agda6Converts a file name and two positions to an interval.AgdaThe length of an interval.AgdaTThe intervals that make up the range. The intervals are consecutive and separated ().Agda8Turns a file name plus a list of intervals into a range.Precondition: .Agda}Are the intervals consecutive and separated, do they all point to the same file, and do they satisfy the interval invariant?AgdaRange invariant.Agda"The file the range is pointing to.Agda%Conflate a range to its right margin.Agda*Remove ranges in keys and values of a map.Agda;The first position in a file: position 1, line 1, column 1.Agda;The first position in a file: position 1, line 1, column 1.Agda$Ranges between two unknown positionsAgda?Advance the position by one character. A newline character ('\n'~) moves the position to the first character in the next line. Any other character moves the position to the next column.Agda!Advance the position by a string.  movePosByString = foldl' movePosAgda%Backup the position by one character.(Precondition: The character must not be '\n'.Agda2Converts a file name and two positions to a range.Agda"Converts two positions to a range.;Precondition: The positions have to point to the same file.Agda0Converts a file name and an interval to a range.Agda-Converts a range to an interval, if possible.AgdagConverts a range to an interval, if possible. Note that the information about the source file is lost.Agda?Returns the shortest continuous range containing the given one.Agda0Removes gaps between intervals on the same line.Agda*The initial position in the range, if any.Agda*The initial position in the range, if any.Agda;The position after the final position in the range, if any.Agda;The position after the final position in the range, if any.Agda4Finds the least interval which covers the arguments.8Precondition: The intervals must point to the same file.AgdafuseRanges r r' unions the ranges r and r'.!Meaning it finds the least range r0 that covers r and r'.CPrecondition: The ranges must point to the same file (or be empty).AgdaDPrecondition: The ranges must point to the same file (or be empty).Agda beginningOf rN is an empty range (a single, empty interval) positioned at the beginning of r. If r" does not have a beginning, then  is returned.AgdabeginningOfFile rC is an empty range (a single, empty interval) at the beginning of r\'s starting position's file. If there is no such position, then an empty range is returned.Agdax `withRangeOf` y sets the range of x to the range of y.Agda*Interleaves two streams of ranged elements*It will report the conflicts as a list of conflicting pairs. In case of conflict, the element with the earliest start position is placed first. In case of a tie, the element with the earliest ending position is placed first. If both tie, the element from the first list is placed first.AgdaZPrecondition: The ranges of the tuple elements must point to the same file (or be empty).AgdaZPrecondition: The ranges of the tuple elements must point to the same file (or be empty).AgdaZPrecondition: The ranges of the tuple elements must point to the same file (or be empty).AgdaZPrecondition: The ranges of the tuple elements must point to the same file (or be empty).AgdaZPrecondition: The ranges of the tuple elements must point to the same file (or be empty).AgdaZPrecondition: The ranges of the tuple elements must point to the same file (or be empty).AgdaYPrecondition: The ranges of the list elements must point to the same file (or be empty).AgdaYPrecondition: The ranges of the list elements must point to the same file (or be empty).AgdaOverlaps with  KillRange [a].Topqrstuvwxy{z|}~T}|~xy{zvwturspqoGNone"#$,.124568=>?@ACEPSX_`y Agda%Things that support delayed dropping. Agda)Delayed dropping which allows undropping.Agda&Non-negative number of things to drop.AgdaWhere to drop from.Agda3Invert a Permutation on a partial finite int map. inversePermute perm f = f' such that permute perm f' = f!Example, with map represented as  [Maybe a]: r f = [Nothing, Just a, Just b ] perm = Perm 4 [3,0,2] f' = [ Just a , Nothing , Just b , Nothing ]  Zipping perm with f gives  [(0,a),(2,b)], after compression with  catMaybes. This is an IntMap9 which can easily written out into a substitution again.AgdaPartial permutations. Examples:)permute [1,2,0] [x0,x1,x2] = [x1,x2,x0] (proper permutation).&permute [1,0] [x0,x1,x2] = [x1,x0] (partial permuation).,permute [1,0,1,2] [x0,x1,x2] = [x1,x0,x1,x2]- (not a permutation because not invertible).Agda typing would be: 9Perm : {m : Nat}(n : Nat) -> Vec (Fin n) m -> Permutation m is the B of the permutation.Agda'permute [1,2,0] [x0,x1,x2] = [x1,x2,x0] More precisely, permute indices list = sublist , generates sublist from list1 by picking the elements of list as indicated by indices. *permute [1,3,0] [x0,x1,x2,x3] = [x1,x3,x0]Agda typing: ,permute (Perm {m} n is) : Vec A m -> Vec A nAgdaIdentity permutation.Agda"Restrict a permutation to work on n elements, discarding picks >=n.Agda9Pick the elements that are not picked by the permutation.AgdaliftP k takes a  Perm {m} n to a Perm {m+k} (n+k). Analogous to TU?, but Permutations operate on de Bruijn LEVELS, not indices.Agda 2permute (compose p1 p2) == permute p1 . permute p2Agda invertP err p is the inverse of p) where defined, otherwise defaults to err. composeP p (invertP err p) == pAgdaITurn a possible non-surjective permutation into a surjective permutation. Agda ?permute (reverseP p) xs == reverse $ permute p $ reverse xs Example: Q permute (reverseP (Perm 4 [1,3,0])) [x0,x1,x2,x3] == permute (Perm 4 $ map (3-) [0,3,1]) [x0,x1,x2,x3] == permute (Perm 4 [3,0,2]) [x0,x1,x2,x3] == [x3,x0,x2] == reverse [x2,x0,x3] == reverse $ permute (Perm 4 [1,3,0]) [x3,x2,x1,x0] == reverse $ permute (Perm 4 [1,3,0]) $ reverse [x0,x1,x2,x3] With reversePc, you can convert a permutation on de Bruijn indices to one on de Bruijn levels, and vice versa.!Agda8permPicks (flipP p) = permute p (downFrom (permRange p)) or Gpermute (flipP (Perm n xs)) [0..n-1] = permute (Perm n xs) (downFrom n)dCan be use to turn a permutation from (de Bruijn) levels to levels to one from levels to indices.See VW."Agda expandP i n  in the domain of  replace the ith element by n elements.#Agda~Stable topologic sort. The first argument decides whether its first argument is an immediate parent to its second argument. AgdaPerform the dropping. Agda Drop more. AgdaPick up dropped stuff.      !"# !"#     INone"#$,.1245678=>?@ACEMPSX_`Hy:Agda!Universe check? (Default is yes).=Agda#Positivity check? (Default = True).>Agda0Termination check? (Default = TerminationCheck).?AgdaRun the termination checker.@Agda#Skip termination checking (unsafe).AAgdaTreat as non-terminating.BAgda/Treat as terminating (unsafe). Same effect as @.CAgda2Skip termination checking but use measure instead.FAgdaRename from this name.GAgda#To this one. Must be same kind as F.HAgdaCThe range of the "to" keyword. Retained for highlighting purposes.IAgda3An imported name can be a module or a defined name.JAgdaImported module name of type m.KAgdaImported name of type n.OAgdaYThe things you are allowed to say when you shuffle names between name spaces (i.e. in import,  namespace, or open declarations).UAgda Only for open3. Exports the opened names from the current module.YAgda@Placeholders are used to represent the underscores in a section.[AgdaYThe second argument is used only (but not always) for name parts other than underscores.\Agda4The position of a name part or underscore in a name.]Agda;The following underscore is at the beginning of the name: _foo.^Agda8The following underscore is in the middle of the name: foo_bar._Agda4The following underscore is at the end of the name: foo_.bAgda4A meta variable identifier is just a natural number.eAgdaWThe unique identifier of a name. Second argument is the top-level module identifier.iAgdaIs this a macro definition?lAgda0Is this definition eligible for instance search?oAgdaAbstract or concreterAgdaAccess modifier.sAgda Store the p of the private block that lead to this qualifier. This is needed for more faithful printing of declarations.uAgdabVisible from outside, but not exported when opening the module Used for qualified constructors.vAgda@Functions can be defined in both infix and prefix style. See aX.|Agda"Where does a projection come from?}AgdaUser wrote a prefix projection.~Agda User wrote a postfix projection.Agda'Projection was generated by the system.AgdaWhere does the ConP or Con come from?Agda8Inserted by system or expanded from an implicit pattern.Agda#User wrote a constructor (pattern).AgdaUser wrote a record (pattern).Agda(Generated by interactive case splitting.AgdaString with range info.AgdaA RawName is some sort of string.AgdaThing with range info.AgdaOnly  arguments can have names.AgdaAccessor/editor for the  component.AgdaStandard naming.Agda&Something potentially carrying a name.Agda Similar to , but we need to distinguish an irrelevance annotation in a function domain (the domain itself is not irrelevant!) from an irrelevant argument.Dom is used in Pi of internal syntax, in Context and  Telescope.  is used for actual arguments (Var, Con, Def etc.) and in Abstract syntax and other situations.  cubical When domFinite = True for the domain of a Pi type, the elements should be compared by tabulating the domain type. Only supported in case the domain type is primIsOne, to obtain the correct equality for partial elements.Agda4A function argument can be hidden and/or irrelevant.AgdaA lens to access the : attribute in data structures. Minimal implementation: getFreeVariables and one of setFreeVariables or mapFreeVariables.AgdaA lens to access the : attribute in data structures. Minimal implementation:  getOrigin and one of  setOrigin or  mapOrigin.AgdaDecorating something with  information.AgdaOrigin of arguments.Agda/From the source file / user input. (Preserve!)AgdaE.g. inserted hidden arguments.Agda%Produced by the reflection machinery.Agda&Produced by an interactive case split.Agda[Named application produced to represent a substitution. E.g. "?0 (x = n)" instead of "?0 n"AgdaA lens to access the : attribute in data structures. Minimal implementation:  getRelevance and one of  setRelevance or  mapRelevance.Agda:A function argument can be relevant or irrelevant. See Agda.TypeChecking.Irrelevance.Agda4The argument is (possibly) relevant at compile-time.AgdaThe argument may never flow into evaluation position. Therefore, it is irrelevant at run-time. It is treated relevantly during equality checking.Agda3The argument is irrelevant at compile- and runtime.AgdaQuantity for linearity.mA quantity is a set of natural numbers, indicating possible semantic uses of a variable. A singleton set {n}= requires that the corresponding variable is used exactly n times.Agda Zero uses {0}, erased at runtime.Agda Linear use {1}s (could be updated destructively). Mostly TODO (needs postponable constraints between quantities to compute uses).AgdaUnrestricted use !.AgdaWe have a tuple of modalities, which might not be fully orthogonal. For instance, irrelevant stuff is also run-time irrelevant.Agda4Legacy irrelevance. See Pfenning, LiCS 2001; AbelVezzosiWinterhalter, ICFP 2017.AgdaCardinality / runtime erasure. See Conor McBride, I got plenty o' nutting, Wadlerfest 2016. See Bob Atkey, Syntax and Semantics of Quantitative Type Theory, LiCS 2018.AgdaA lens to access the : attribute in data structures. Minimal implementation:  getHiding and one of  setHiding or  mapHiding.AgdaDecorating something with  information.Agda4Used to specify whether something should be delayed.AgdaMonoidal composition of  information in some data.Agda arguments are visible.Agda and  arguments are  notVisible.Agda arguments are hidden.AgdaIgnores .Agdam  m' means that an m can be used where ever an m' is required.AgdaCompose with modality flag from the left. This function is e.g. used to update the modality information on pattern variables a- after a match against something of modality q.AgdainverseComposeModality r x returns the least modality y such that forall x, y we have .x `moreUsableModality` (r `composeModality` y) iff 5(r `inverseComposeModality` x) `moreUsableModality` y (Galois connection).AgdaLeft division by a 3. Used e.g. to modify context when going into a m argument.Agdam moreUsableQuantity m' means that an m can be used where ever an m' is required.Agda9A thing of quantity 0 is unusable, all others are usable.AgdaCompose with quantity flag from the left. This function is e.g. used to update the quantity information on pattern variables a- after a match against something of quantity q.AgdainverseComposeQuantity r x returns the least quantity y such that forall x, y we have (x `moreQuantity` (r `composeQuantity` y) iff /(r `inverseComposeQuantity` x) `moreQuantity` y (Galois connection).AgdaLeft division by a 3. Used e.g. to modify context when going into a q argument.AgdaInformation ordering. @Relevant `moreRelevant` NonStrict `moreRelevant` IrrelevantAgdausableRelevance rel == False! iff we cannot use a variable of rel.Agda composition.  is dominant,  is neutral.AgdaCompose with relevance flag from the left. This function is e.g. used to update the relevance information on pattern variables a! after a match against something rel.AgdainverseComposeRelevance r x returns the most irrelevant y such that forall x, y we have )x `moreRelevant` (r `composeRelevance` y) iff 0(r `inverseComposeRelevance` x) `moreRelevant` y (Galois connection). AgdaLeft division by a 3. Used e.g. to modify context when going into a rel argument.!AgdaKIrrelevant function arguments may appear non-strictly in the codomain type."AgdaBApplied when working on types (unless --experimental-irrelevance).7Agdaxs `withArgsFrom` args translates xs into a list of s, using the elements in args to fill in the non- fields.5Precondition: The two lists should have equal length.EAgdaGet the content of a .HAgdaThe functor instance for 8 would be ambiguous, so we give it another name here.IAgda ,setNamedArg a b = updateNamedArg (const b) aJAgdaThing with no range info.MAgda)Prefer user-written over system-inserted.NAgdaAn abbreviation: noPlaceholder = [ c.OAgdaDefault is directive is private% (use everything, but do not export).]Agda Just for the 9 instance. Should never combine different overlapping.aAgda, is an idempotent partial monoid, with unit .  and  are incompatible.pAgdaNote that the order is  "d 0,1, more options is smaller.qAgdaZIn the absense of finite quantities besides 0,  is the unit. Otherwise, 1 is the unit.rAgda+Composition of quantities (multiplication). is dominant.  is neutral.wAgda is the unit.xAgda% forms a semigroup under composition.yAgdaMore relevant is smaller.zAgdaMore relevant is smaller.AgdaDominance ordering.AgdaPointwise unit.AgdaPointwise composition.AgdaIgnores , , , and $. Ignores content of argument if .AgdaRanges are not forced.AgdaIgnores  and .Agda(Show non-record version of this newtype.AgdaRanges are not forced.AgdaRanges are not forced.:<;=>CBA@?DEHGFIJKLMNOPUTQRSVWXY[Z\^]_`abcdefghikjlnmoqprutsvxwyz{|~}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQ      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM|~}yz{vxwrutsoqplnmikjhgefbcd`a\^]_Y[ZNVWXOPUTQRSLMNOPIJKQDEHGF>CBA@?=:<;JNone"#$%,.14568=>?@ACEPSX_` Agda/Type of a literate preprocessor: Invariants:  f : Processor f pos s /= []f pos s >>= layerContent == s AgdaA list of contiguous layers. Agda9A sequence of characters in a file playing the same role. Agda Role of a character in the file.3Agda7Annotates a tokenized string with position information. Agda[List of valid extensions for literate Agda files, and their corresponding preprocessors.yIf you add new extensions, remember to update test/Utils.hs so that test cases ending in the new extensions are found. AgdaReturns True& if the role corresponds to Agda code. AgdaReturns True! if the layer contains Agda code. AgdaBlanks the non-code parts of a given file, preserving positions of characters corresponding to code. This way, there is a direct correspondence between source positions and positions in the processed result.3Agda6Replaces non-space characters in a string with spaces.3Agda*Check if a character is a blank character. AgdaJShort list of extensions for literate Agda files. For display purposes.3AgdaBreaks a list just after1 an element satisfying the predicate is found.break1 even [1,3,5,2,4,7,8]([1,3,5,2],[4,7,8])3AgdaXReturns a tuple consisting of the first line of the input, and the rest of the input.3Agda2Canonical decomposition of an empty literate file.3AgdadCreate a regular expression that: - Must match the whole string - Works across line boundaries AgdaPreprocessor for literate TeX. AgdaPreprocessor for Markdown. Agda"Preprocessor for reStructuredText. Agda$Preprocessor for Org mode documents.  KNone"#$,.145678=>?@ACEPSX_`e AgdaThe parser monad. AgdaMemoisation keys. AgdaRuns the parser. AgdaOParses a token satisfying the given predicate. The computed value is returned. Agda.Parses a token satisfying the given predicate. AgdauUses the given document as the printed representation of the given parser. The document's precedence is taken to be atomP. AgdaMemoises the given parser./Every memoised parser must be annotated with a uniqueI key. (Parametrised parsers must use distinct keys for distinct inputs.) Agda@Memoises the given parser, but only if printing, not if parsing./Every memoised parser must be annotated with a uniqueI key. (Parametrised parsers must use distinct keys for distinct inputs.) Agda&Tries to print the parser, or returns 3nF, depending on the implementation. This function might not terminate.  LNone"#$,.124568=>?@ACEPSX_`= AgdaArbitrary JS code.% % MNone"#$,.14568=>?@ACEPSX_`[                                NNone"#$,.14568=>?@ACEPSX_` *AgdaCheck if a string is a valid JS identifier. The check ignores keywords as we prepend z_ to our identifiers. The check is conservative and may not admit all valid JS identifiers.   ! " # $ % & ' ( ) * " # $ !   % & ' ( ) *ONone"#$,.14568=>?@ACEPSX_` |' ?Agda"Entry of an explicit substitution.&An explicit substitution is a list of CAction<s. This is isomorphic to the usual presentation where Skip and Weak& would be constructors of exp. substs. @AgdaInstantation of variable. AAgda'For going under a binder, often called Lift. BAgda2Shifting substitution (going to a larger context). HAgdaAn expression a in an explicit substitution  [CAction a]. IAgdaBLazy concatenation of argument lists under explicit substitutions. LAgdaHead-normal form of  I. First entry is exposed.,Q: Why are there no projection eliminations? \AgdaNo more eliminations. ]AgdaApplication and tail. ^Agda proj pre args, projfcn idx, tail _AgdaConstructor parameter (missing in Agda). Agsy has monomorphic constructors. Inserted to cover glitch of polymorphic constructor applications coming from Agda `Agda>"Maybe expression": Expression or reference to meta variable. aAgdaAgsy's internal syntax. cAgdaLambda with hiding information. dAgdaTrue8 if possibly dependent (var not known to not occur). False if non-dependent. fAgda&Absurd lambda with hiding information. gAgdaUnique identifier of the head. hAgda'This application has been type-checked. iAgdaHead. jAgda Arguments. oAgda"Head of application (elimination). vAgda Dot pattern. xAgdaConstant definitions. }AgdaConstant signatures. AgdaFor debug printing. AgdaReference to the Agda constant. AgdaType of constant. AgdaConstant definition. Agda7Free vars of the module where the constant is defined.. AgdaAbstraction with maybe a name.NDifferent from Agda, where there is also info whether function is constant. AgdaThe concrete instance of the blk parameter in 8. I.e., the information passed to the search control. Agda[Nat - deffreevars (to make cost of using module parameters correspond to that of hints). Agda1Size of typing context in which meta was created. Agda!Head normal form of type of meta. AgdaTrue if iota steps performed when normalising target type (used to put cost when traversing a definition by construction instantiation). Agda;Unique identifiers for variable occurrences in unification. AgdaSubstituting for a variable. AgdaFreeVars class and instances Agda Renaming Typeclass and instances 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I K J L O N M P T S R Q U V W Y X Z [ _ ^ ] \ ` a f c d e b j i h g k m l n o q p r s v u t w x y | { z } ~  } ~  x y | { z w s v u t r o q p k m l n a f c d e b j i h g ` [ _ ^ ] \ Z V W Y X U P T S R Q L O N M I K J H F G E C D ? @ A B > = ; < 9 : 7 8 5 6 3 4PNone"#$,.14568=>?@ACEPSX_` Agda!Moves A move is composed of a Cost: together with an action computing the refined problem. Agda univar sub v figures out what the name of v" "outside" of the substitution sub ought to be, if anything. Agda6List of the variables instantiated by the substitution AgdaNew constructors Taking a step towards a solution consists in picking a constructor and filling in the missing parts with placeholders to be discharged later on. Agda5New spine of arguments potentially using placeholders AgdaNew App?lication node using a new spine of arguments respecting the Hiding annotation AgdaEquality reasoning steps The begin token is accompanied by two steps because it does not make sense to have a derivation any shorter than that. AgdakPick the first unused UId amongst the ones you have seen (GA: ??) Defaults to the head of the seen ones.E                          E                          QNone"#$,.14568=>?@ACEPSX_`! 7Agda)Typechecker drives the solution of metas.- ) , + * - / . 0 2 1 3 5 4 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U- 7 8 9 : ; < = > ? 6 @ A B C D E F 3 5 4 G H I J 0 2 1 K L M - / . ) , + * N O P Q R S T URNone"#$,.14568=>?@ACEPSX_`& VAgdadSpeculation: Type class computing the size (?) of a pattern and collecting the vars it introduces AgdaITake a list of patterns and returns (is, size, vars) where (speculation):2 V W X Y Z \ [ ] ^ _ ` a g f e d c b h i j k l m n o p q r s t u v w x y z { | } ~  2 l m n o p j k q i h a g f e d c b ` r s t ^ _ u v w x ] Z \ [ y z { | X Y } ~  V W SNone"#$,.124568=>?@ACEMPSX_`Y;- Agda The result of parsing something. AgdaWarnings for parsing. Agda,Parse errors that concern a range in a file. Agda)The range of the bigger overlapping token Agda,Parse errors: what you get if parsing fails. Agda4Errors that arise at a specific position in the file Agda,Parse errors that concern a range in a file. Agda'Parse errors that concern a whole file. Agda%The file in which the error occurred. AgdaWhere the error occurred. AgdaThe remaining input. AgdaThe previous token. Agda*Hopefully an explanation of what happened. Agda)The range of the bigger overlapping token Agda"The file which the error concerns. Agda Parser flags. Agda/Should comment tokens be returned by the lexer? AgdaWe need to keep track of the context to do layout. The context specifies the indentation (if any) of a layout block. See Agda.Syntax.Parser.Layout for more informaton. Agda no layout Agdalayout at specified column Agda:For context sensitive lexing alex provides what is called  start codesp in the Alex documentation. It is really an integer representing the state of the lexer, so we call it LexState instead. AgdaRThe parser state. Contains everything the parser and the lexer could ever need. Agda"position at current input location Agdaposition of last token Agdathe current input Agdathe character before the input Agdathe previous token Agdathe stack of layout contexts AgdaCthe state of the lexer (states can be nested so we need a stack) Agdaparametrization of the parser AgdaThe parse monad.3AgdaOld interface to parser. Agda,Throw a parse error at the current position. AgdaConstructs the initial state of the parser. The string argument is the input string, the file path is only there because it's part of a position. AgdaThe default flags. Agda.The most general way of parsing a string. The Agda.Syntax.Parser; will define more specialised functions that supply the   and the  . Agda.The even more general way of parsing a string. AgdaeParses a string as if it were the contents of the given file Useful for integrating preprocessors. AgdaIThe parse interval is between the last position and the current position. AgdaFake a parse error at the specified position. Used, for instance, when lexing nested comments, which when failing will always fail at the end of the file. A more informative position is the beginning of the failing comment. AgdaUse   or   as appropriate. Agda3Report a parse error at the beginning of the given y. AgdaFor lexical errors we want to report the current position as the site of the error, whereas for parse errors the previous position is the one we're interested in (since this will be the position of the token we just lexed). This function does   the current position. Agda"Return the current layout context. AgdaShould only be used at the beginning of a file. When we start parsing we should be in layout mode. Instead of forcing zero indentation we use the indentation of the first token.> > TNone"#$,.124568=>?@ACEPSX_`q AgdaClassification of notations. AgdaEx:  _bla_blub_. AgdaEx:  _bla_blub. AgdaEx:  bla_blub_. AgdaEx: bla_blub. AgdaPart of a Notation AgdaArgument is the position of the hole (with binding) where the binding should occur. First range is the rhs range and second is the binder. Agda+Argument is where the expression should go. Agda"An underscore in binding position. AgdaNotation as provided by the syntax declaration. Agda8Data type constructed in the Happy parser; converted to  $ before it leaves the Happy code. Agda x -> y2; 1st argument is the bound name (unused for now). AgdaSimple named hole with hiding. AgdaIs the hole a binder? Agda2Get a flat list of identifier parts of a notation. AgdaATarget argument position of a part (Nothing if it is not a hole). AgdaeIs the part a hole? WildHoles don't count since they don't correspond to anything the user writes. AgdaIs the part a normal hole? AgdaIs the part a binder? Agda<Classify a notation by presence of leading and/or trailing normal holes. Agda2From notation with names to notation with indices. Example: n ids = ["for", "x", """, "xs", "return", "e"] holes = [ LambdaHole "x" "e", ExprHole "xs" ]  creates the notation  [ IdPart "for" , BindHole 0 , IdPart """ , NormalHole 1 , IdPart "return" , NormalHole 0 ]       UNone"#$,.1245678=>?@ACEMPSX_` Agda+Check whether a name is the empty name "_". AgdaNumber of holes in a  %$ (i.e., arity of a mixfix-operator). AgdaATop-level module names. Used in connection with the file system.&Invariant: The list must not be empty. AgdaQNamee is a list of namespaces and the name of the constant. For the moment assumes namespaces are just Names and not explicitly applied modules. Also assumes namespaces are generative by just using derived equality. We will have to define an equality instance to non-generative namespaces (as well as having some sort of lookup table for namespace names). AgdaA.rest. !Agdax. "Agda<Mixfix identifiers are composed of words and holes, e.g. _+_ or  if_then_else_ or [_/_]. #Agda_ part. $AgdaIdentifier part. %Agda*A name is a non-empty list of alternating  $s and  #js. A normal name is represented by a singleton list, and operators are represented by a list with  #/s where the arguments should go. For instance: [Hole,Id "+",Hole] is infix addition.Equality and ordering on NameQs are defined to ignore range so same names in different locations are equal. &AgdaA (mixfix) identifier. 'Agda_. ,AgdavAn open mixfix identifier is either prefix, infix, or suffix. That is to say: at least one of its extremities is a Hole 0Agda+Parse a string to parts of a concrete name.Note: 5stringNameParts "_" == [Id "_"] == nameParts NoName{} 1AgdaIs the name an operator? 8Agda<Get the next version of the concrete name. For instance, nextName "x" = "x ". The name must not be a  '. 9AgdaXGet the first version of the concrete name that does not satisfy the given predicate. :AgdaJGet a raw version of the name with all suffixes removed. For instance, nameRoot "x " = "x". The name must not be a  '. <Agda qualify A.B x == A.B.x =Agda unqualify A.B.x == xThe range is preserved. >Agda qnameParts A.B.x = [A, B, x] ?AgdaIs the name qualified? @AgdaTurns a qualified name into a  F. The qualified name is assumed to represent a top-level module name. AAgdaFTurns a top-level module name into a file name with the given suffix. BAgdapFinds the current project's "root" directory, given a project file and the corresponding top-level module name.8Example: If the module "A.B.C" is located in the file "fooABC.agda", then the root is "foo".2Precondition: The module name must be well-formed. CAgda  noName_ =  D  RAgdaRanges are not forced. [AgdaDefine equality on NameC to ignore range so same names in different locations are equal.'Is there a reason not to do this? -JeffNo. But there are tons of reasons to do it. For instance, when using names as keys in maps you really don't want to have to get the range right to be able to do a lookup. -Ulf7                   ! " # $ % ' & * ) ( + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D7 % ' & * ) ( + , " # $  !     - . / 0   1 2 3 4 5 6          7 8 9 : ; < = > ? @ A B C D  WNone"#$,.14568=>?@ACEPSX_` Agda(Conjunctive constraint.) AgdaAn attribute is a modifier for . AgdaModifiers for . AgdaModifiers for . Agda#Concrete syntax for all attributes. Agda#Parsing a string into an attribute. Agda!Setting an attribute (in e.g. an ). Overwrites previous value. AgdaXSetting some attributes in left-to-right order. Blindly overwrites previous settings. AgdaSetting  if unset. AgdaSetting  if unset. Agda'Setting an unset attribute (to e.g. an ). Agda#Setting a list of unset attributes.    XNone"#$,.124568=>?@ACEMPSX_`r AgdaMake a   from some kind of string. AgdaThe y sets the definition site of the name, not the use site. Agda*Check whether we are a projection pattern. Agda<Ambiguous qualified names. Used for overloaded constructors.Invariant: All the names in the list must have the same concrete, unqualified name. (This implies that they all have the same y). Agda'A module name is just a qualified name.The rH instance for module names sets all individual ranges to the given one. Agda(Something preceeded by a qualified name. AgdaQualified names are non-empty lists of names. Equality on qualified names are just equality on the last name, i.e. the module part is just for show.The rr instance for qualified names sets all individual ranges (including those of the module prefix) to the given one. AgdaA name is a unique identifier and a suggestion for a concrete name. The concrete name contains the source location (if any) of the name. The source location of the binding site is also recorded. Agda%Useful for debugging scoping problems AgdaA singleton "ambiguous" name. Agda%Get the first of the ambiguous names. AgdaIs a name ambiguous. AgdaGet the name if unambiguous. AgdaFA module is anonymous if the qualification path ends in an underscore. AgdaSets the ranges of the individual names in the module name to match those of the corresponding concrete names. If the concrete names are fewer than the number of module name name parts, then the initial name parts get the range .C.D.E `withRangesOf` [A, B] returns C.D.E! but with ranges set as follows:C: .D: the range of A.E: the range of B.jPrecondition: The number of module name name parts has to be at least as large as the length of the list. AgdaLike  b, but uses the name parts (qualifier + name) of the qualified name as the list of concrete names. AgdaTurn a qualified name into a concrete name. This should only be used as a fallback when looking up the right concrete name in the scope fails. Agda Computes the TopLevelModuleName` corresponding to the given module name, which is assumed to represent a top-level module name.2Precondition: The module name must be well-formed. Agda Convert a   to a   (add no module name). AgdaIs the name an operator? Agda9Get the next version of the concrete name. For instance, nextName "x" = "x ". The name must not be a NoName. AgdaThe range is not forced. AgdaOnly use this show3 function in debugging! To convert an abstract   into a string use  prettyShow. Agda8An abstract name is empty if its concrete name is empty. AgdaOnly use this show3 function in debugging! To convert an abstract   into a string use  prettyShow. AgdaOnly use this show3 function in debugging! To convert an abstract   into a string use  prettyShow. AgdaThe range of an AmbiguousQNameQ is the range of any of its disambiguations (they are the same concrete name). AgdaPWe can have an instance for ambiguous names as all share a common concrete name. AgdaUse  to print names to the user.8   8  YNone"#$,.124568=>?@ACEPSX_`ޢ AgdaRanges are not forced.                 ZNone"#$,.124568=>?@ACEPSX_`g Agda5Checks if the given expression is unreachable or not. Agda Code which is unreachable. E.g. absurd branches or missing case defaults. Runtime behaviour of unreachable code is undefined, but preferably the program will exit with an error message. The compiler is free to assume that this code is unreachable and to remove it. AgdaMatches on the given constructor. If the match succeeds, the pattern variables are prepended to the current environment (pushes all existing variables aArity steps further away) AgdaBinds no variables ,AgdaCCompiler-related primitives. This are NOT the same thing as primitives in Agda's surface or internal syntax! Some of the primitives have a suffix indicating which type of arguments they take, using the following naming convention: Char | Type C | Character F | Float I | Integer Q | QName S | String LAgdaintroduces a new local binding. The bound term MUST only be evaluated if it is used inside the body. Sharing may happen, but is optional. It is also perfectly valid to just inline the bound term in the body. MAgdaCase scrutinee (always variable), case type, default value, alternatives First, all TACon alternatives are tried; then all TAGuard alternatives in top to bottom order. TACon alternatives must not overlap. QAgdaUsed by the GHC backend RAgda,A runtime error, something bad has happened. TAgdaThe treeless compiler can behave differently depending on the target language evaluation strategy. For instance, more aggressive erasure for lazy targets. cAgdaIntroduces a new binding                ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m[              ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m[None"#$,.14568=>?@ACEPSX_`d) ) \None"#$,.14568=>?@ACEPSX_`0 AgdaA misplaced end-comment "-}".q       !"#$%&'()*+,-./q       !"#$%&'()*+,-./ HNone"#$,.124568=>?@ACEPSX_`8$8AgdagThe notation is handled as the fixity in the renamer. Hence, they are grouped together in this type.7AgdaWhen printing we keep track of a stack of precedences in order to be able to decide whether it's safe to leave out parens around lambdas. An empty stack is equivalent to 9. Invariant: `notElem TopCtx`.8Agda(Precedence is associated with a context.CAgda*Do we prefer parens around arguments like  x ! x or not? See t.FAgdaFixity of operators.HAgda&Range of the whole fixity declaration.KAgdaAssociativity.OAgda Precedence levels for operators.PAgdaNo fixity declared.QAgdaFixity level declared as the Integer.RAgda-Sections, as well as non-sectioned operators.UAgda>For non-sectioned operators this should match the notation's  .VAgdaEffective precedence level. 3 for closed notations.WAgda3m for non-sectioned operators.XAgda/All the notation information related to a name.[Agda-The names the syntax and/or fixity belong to.AInvariant: The set is non-empty. Every name in the list matches Z.\Agda3Associativity and precedence (fixity) of the names.]Agda!Syntax associated with the names.^AgdaPTrue if the notation comes from an operator (rather than a syntax declaration)._AgdaDecorating something with Fixity'.dAgda`Range of the name in the fixity declaration (used for correct highlighting, see issue #2140).eAgdaLIf an operator has no specific notation, then it is computed from its name.fAgdaReplace k by l.gAgda Return the  s of a notation, the first part qualified, the other parts unqualified. This allows for qualified use of operators, e.g., M.for x " xs return e, or x !.+ y.hAgda Create a  # (without binders) from a concrete  % . Does the obvious thing:  # s become  s,  $ s become IdParts. If  % has no  #s, it returns  .iAgdaMerges XIs that have the same precedence level and notation, with two exceptions:MOperators and notations coming from syntax declarations are kept separate.If all instances of a given X have the same precedence level or are "unrelated", then they are merged. They get the given precedence level, if any, and otherwise they become unrelated (but related to each other).If X@s that are merged have distinct associativities, then they get L as their associativity.Precondition: No  1 may occur in more than one list element. Every X must have the same Z.Postcondition: No  & occurs in more than one list element.jAgda'Converts a notation to a (non-)section.qAgda#Argument context preferring parens.rAgdalDo we need to bracket an operator application of the given fixity in a context with the given precedence.sAgdalDo we need to bracket an operator application of the given fixity in a context with the given precedence.tAgdaDoes a lambda-like thing (lambda, let or pi) need brackets in the given context? A peculiar thing with lambdas is that they don't need brackets in certain right operand contexts. To decide we need to look at the stack of precedences and not just the current precedence. Example: m >>= ( x ! x) >>= m  (for _>>=_ left associative).uAgda*Does a function application need brackets?vAgda*Does a function application need brackets?wAgda&Does a with application need brackets?xAgda$Does a function space need brackets?}AgdaRanges are not forced.H8adcb978BA@?>=<;:9CEDFGHJIKNMLOQPRSWVUTXY^]\[Z_`efghijklmnopqrstuvwxyz{|H8adcb_`XY^]\[Zefgh9iRSWVUTjOQPKNMLFGHJIklCEDmn8BA@?>=<;:97opqrstuvwxyz{|]None"#$,.124568=>?@ACEPSX_`F Agda.Zero or more consecutive and separated ranges.AgdaQCharacter ranges. The first character in the file has position 1. Note that the 4 position is considered to be outside of the range. Invariant:  3 .AgdaThe  invariant.AgdaThe  invariant.Agda3 iff the ranges overlap.)The ranges are assumed to be well-formed.Agda3 iff the range is empty.Agda(Converts a range to a list of positions.Agda/Converts several ranges to a list of positions.Agda Converts a y to a .Agda minus xs ys! computes the difference between xs and ys<: the result contains those positions which are present in xs but not in ys.*Linear in the lengths of the input ranges.^None"#$,.14568=>?@ACEMPSX_`AAgda SCC DAGs.0The maps map SCC indices to and from SCCs/nodes.AgdaVarious kinds of nodes.AgdaNodes with outgoing edges.AgdaNodes with incoming edges.Agda!All nodes, with or without edges.AgdaEdges.AgdaOutgoing node.AgdaIncoming node.AgdaEdge label (weight).Agda Graph n e, is a type of directed graphs with nodes in n and edges in e.lAt most one edge is allowed between any two nodes. Multigraphs can be simulated by letting the edge type e be a collection type.The graphs are represented as adjacency maps (adjacency lists, but using finite maps instead of arrays and lists). This makes it possible to compute a node's outgoing edges in logarithmic time (O(log n)B). However, computing the incoming edges may be more expensive.LNote that neither the number of nodes nor the number of edges may exceed 3 :: 3.AgdaForward edges.AgdaInternal invariant.AgdaIf there is an edge from s to t, then  lookup s t g is 3 e, where e is the edge's label. O(log n).AgdaThe graph's edges. O(n + e).Agdaneighbours u g consists of all nodes v" for which there is an edge from u to v in g-, along with the corresponding edge labels.  O(log n + |neighbours u g|).AgdaneighboursMap u g consists of all nodes v" for which there is an edge from u to v in g-, along with the corresponding edge labels. O(log n).AgdaedgesFrom g nst is a list containing all edges originating in the given nodes (i.e., all outgoing edges for the given nodes). If nsT does not contain duplicates, then the resulting list does not contain duplicates. O(|ns| log |n| + |edgesFrom g ns|).Agda edgesTo g nsn is a list containing all edges ending in the given nodes (i.e., all incoming edges for the given nodes). If nsU does not contain duplicates, then the resulting list does not contain duplicates. O(|ns | n log n).AgdaAll self-loops.  O(n log n).Agda All nodes. O(n).AgdaNodes with outgoing edges. O(n).AgdaNodes with incoming edges. O(n + e log n).Agda Constructs a  structure. O(n + e log n).Agda*Nodes without incoming or outgoing edges. O(n + e log n).AgdaFChecks whether the graph is discrete (containing no edges other than  edges). O(n + e).AgdaReturns True iff the graph is acyclic.AgdaJConstructs a completely disconnected graph containing the given nodes.  O(n log n).AgdaJConstructs a completely disconnected graph containing the given nodes. O(n).Agda fromEdges es$ is a graph containing the edges in es=, with the caveat that later edges overwrite earlier edges. O(|es| log n).AgdafromEdgesWith f es$ is a graph containing the edges in esM. Later edges are combined with earlier edges using the supplied function. O(|es| log n).Agda"Empty graph (no nodes, no edges). O(1).Agda5A graph with two nodes and a single connecting edge. O(1).Agda Inserts an edge into the graph. O(log n).Agda Inserts an edge into the graph. O(log n).AgdainsertWith f s t new inserts an edge from s to t3 into the graph. If there is already an edge from s to t with label old6, then this edge gets replaced by an edge with label  f new old%, and otherwise the edge's label is new. O(log n).Agda A variant of . O(log n).AgdaLeft-biased union.Time complexity: See .AgdaUnion. The function is used to combine edge labels for edges that occur in both graphs (labels from the first graph are given as the first argument to the function).Time complexity:  O(n log (n n + 1) + e log e , where Pn / is the number of nodes in the graph with the smallest number of nodes and n 0 is the number of nodes in the other graph, and e M is the number of edges in the graph with the smallest number of edges and e + is the number of edges in the other graph."Less complicated time complexity: O((n + e) log n (where n and e refer to the resulting graph).AgdaUnion. O((n + e) log n (where n and e refer to the resulting graph).Agda\Union. The function is used to combine edge labels for edges that occur in several graphs. O((n + e) log n (where n and e refer to the resulting graph).Agda A variant of 3< that provides extra information to the function argument. O(n + e).AgdaReverses an edge. O(1).Agda.The opposite graph (with all edges reversed). O((n + e) log n).AgdaRemoves  edges. O(n + e).AgdaremoveNodes ns g removes the nodes in ns% (and all corresponding edges) from g. O((n + e) log |ns|).AgdaremoveNode n g removes the node n% (and all corresponding edges) from g. O(n + e).AgdaremoveEdge s t g removes the edge going from s to t , if any. O(log n).Agda0Keep only the edges that satisfy the predicate. O(n + e).AgdaUnzips the graph. O(n + e).AgdacomposeWith times plus g g' finds all edges s --c_i--> t_i --d_i--> u) and constructs the result graph from !edge(s,u) = sum_i (c_i times d_i).Complexity: For each edge s --> t in g' we look up all edges starting with t in g'.>Precondition: The two graphs must have exactly the same nodes.AgdaIThe graph's strongly connected components, in reverse topological order.AgdaIThe graph's strongly connected components, in reverse topological order.Agda invariant.AgdaThe opposite DAG.Agda'The nodes reachable from the given SCC.AgdaGConstructs a DAG containing the graph's strongly connected components.AgdaGConstructs a DAG containing the graph's strongly connected components.AgdareachableFrom g n/ is a map containing all nodes reachable from n in g. For each node a simple path to the node is given, along with its length (the number of edges). The paths are as short as possible (in terms of the number of edges).Precondition: n must be a node in g<. The number of nodes in the graph must not be larger than 3 :: 3.KAmortised time complexity (assuming that comparisons take constant time):  O(e log n)j, if the lists are not inspected. Inspection of a prefix of a list is linear in the length of the prefix.AgdareachableFromSet g ns/ is a set containing all nodes reachable from ns in g.Precondition: Every node in ns must be a node in g<. The number of nodes in the graph must not be larger than 3 :: 3.KAmortised time complexity (assuming that comparisons take constant time): O((|ns | + e) log n).3AgdaUsed to implement  and .Agda#walkSatisfying every some g from to% determines if there is a walk from from to to in g/, in which every edge satisfies the predicate every(, and some edge satisfies the predicate someg. If there are several such walks, then a shortest one (in terms of the number of edges) is returned.Precondition: from and to must be nodes in g<. The number of nodes in the graph must not be larger than 3 :: 3.iAmortised time complexity (assuming that comparisons and the predicates take constant time to compute): O(n + e log n).AgdaTransitive closure ported from Agda.Termination.CallGraph.%Relatively efficient, see Issue 1560.Agda Version of ~ that produces a list of intermediate results paired to the left with a difference that lead to the new intermediat result.TThe last element in the list is the transitive closure, paired with the empty graph. (complete g = snd $ last $ completeIter gAgda-Computes the transitive closure of the graph.Uses the Gauss-Jordan-Floyd-Warshall-McNaughton-Yamada algorithm (as described by Russell O'Connor in "A Very General Method of Computing Shortest Paths"  'http://r6.ca/blog/20110808T035622Z.html), implemented using matrices.4The resulting graph does not contain any zero edges.JThis algorithm should be seen as a reference implementation. In practice ! is likely to be more efficient.Agda-Computes the transitive closure of the graph.Uses the Gauss-Jordan-Floyd-Warshall-McNaughton-Yamada algorithm (as described by Russell O'Connor in "A Very General Method of Computing Shortest Paths"  'http://r6.ca/blog/20110808T035622Z.html), implemented using , and with some shortcuts:SZero edge differences are not added to the graph, thus avoiding some zero edges.MStrongly connected components are used to avoid computing some zero edges.yThe graph's strongly connected components (in reverse topological order) are returned along with the transitive closure.Agda*The graph's strongly connected components.GG_None"#$,.14568=>?@ACEPSX_` 2% AgdaThese metas are < ". Agda,Lower or upper bound for a flexible variableAgdaA graph forest.Agda Going from Lt to Le is pred , going from Le to Lt is succ.X --(R,n)--> Y means  X (R) Y + n#. [ ... if n positive and X + (-n) (R) Y if n negative. ]AgdaNodes not connected.Agda4Test for negativity, used to detect negative cycles.-Agda1Compute list of edges that start in a given node..Agda/Compute list of edges that target a given node.9Note: expensive for unidirectional graph representations./Agda Set.foldl* does not exist in legacy versions of the  containers package.0AgdaFloyd-Warshall algorithm.1Agda5Convert a label to a weight, decrementing in case of .7AgdaSplit a list of graphs gs into those that mention node n and those that do not. If n6 is zero or infinity, we regard it as "not mentioned".8AgdaTAdd an edge to a graph forest. Graphs that share a node with the edge are joined.9AgdaReflexive closure. Add edges 0 -> n -> n -> oo for all nodes n.:Agdah : g if any edge in gG between rigids and constants is implied by a corresponding edge in h", which means that the edge in g/ carries at most the information of the one in h.SApplication: Constraint implication: Constraints are compatible with hypotheses.=Agda2Build a graph from list of simplified constraints.>Agda2Build a graph from list of simplified constraints.DAgdaIf we have an edge  X + n <= X (with n >= 0), we must set X = oo.FAgda2Compute a lower bound for a flexible from an edge.GAgda3Compute an upper bound for a flexible from an edge.HAgda6Compute the lower bounds for all flexibles in a graph.IAgda6Compute the upper bounds for all flexibles in a graph.JAgda0Compute the bounds for all flexibles in a graph.KAgdacCompute the relative minima in a set of nodes (those that do not have a predecessor in the set).LAgdaaCompute the relative maxima in a set of nodes (those that do not have a successor in the set).MAgdaGiven source nodes n1,n2,... find all target nodes m1,m2, such that for all j, there are edges n_i --l_ij--> m_j for all i. Return these edges as a map from target notes to a list of edges. We assume the graph is reflexive-transitive.NAgdaGiven target nodes m1,m2,... find all source nodes n1,n2, such that for all j, there are edges n_i --l_ij--> m_j for all i. Return these edges as a map from target notes to a list of edges. We assume the graph is reflexive-transitive.OAgdaBCompute the sup of two different rigids or a rigid and a constant.PAgdaBCompute the inf of two different rigids or a rigid and a constant.QAgda$Compute the least upper bound (sup).RAgda]Compute the greatest lower bound (inf) of size expressions relative to a hypotheses graph.UAgdahSolve a forest of constraint graphs relative to a hypotheses graph. Concatenate individual solutions.VAgdaXCheck that after substitution of the solution, constraints are implied by hypotheses.WAgda1Iterate solver until no more metas can be solved.sThis might trigger a (wanted) error on the second iteration (see Issue 2096) which would otherwise go unnoticed.^AgdaPartial implementation of Num.sAgda$An edge is negative if its label is.tAgda A graph is U if it contains a negative loop (diagonal edge). Makes sense on transitive graphs.WAgda;Meta variable polarities (prefer lower or upper solution?).AgdaBHypotheses (assumed to have no metas, so, fixed during iteration).AgdaConstraints to solve.Agda7Previous substitution (already applied to constraints).AgdaAccumulated substition.U     ! "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYU&%$#"'()*+,-./0! 123456789:;<=>?@AB CD   E FGHIJKLMNOPQRSTUVWXY`None"#$,.124568=>?@ACEPSX_` -MAgdawSubterm occurrences for positivity checking. The constructors are listed in increasing information they provide: 3Mixed <= JustPos <= StrictPos <= GuardPos <= Unused Mixed <= JustNeg <= Unused.Agda-Arbitrary occurrence (positive and negative).AgdaNegative occurrence.Agda/Positive occurrence, but not strictly positive.AgdaStrictly positive occurrence.AgdaVGuarded strictly positive occurrence (i.e., under "). For checking recursive records.Agda-One part of the description of an occurrence.Agda(in the nth argument of a define constantAgda'in the principal argument of built-in "Agda"as an argument to a bound variableAgda as an argument of a metavariableAgdain the type of a constructorAgda$in a datatype index of a constructorAgda'in the nth clause of a defined functionAgda1matched against in a clause of a defined functionAgda"is an index of an inductive familyAgdain the definition of a constantAgdaDescription of an occurrence.AgdaThe elements of the sequences, read from left to right, explain how to get to the occurrence. The second sequence includes the main information, and if the first sequence is non-empty, then it includes information about the context of the second sequence.Agda&The map contains bindings of the form  bound |-> ess?, satisfying the following property: for every non-empty list w, 3 ) w 3 bound iff 3 [ 3 every w 3 3 some w | (every, some) <- ess ].Agda+productOfEdgesInBoundedWalk occ g u v bound returns a value distinct from 3 iff there is a walk c (a list of edges) in g, from u to v, for which the product 3 ) (3 occ c) 3 bound&. In this case the returned value is 3 (3 ) c) for one such walk c.Preconditions: u and v must belong to g, and bound must belong to the domain of boundToEverySome.Agda* is a complete lattice with least element  and greatest element .&It forms a commutative semiring where ( is meet (glb) and )0 is composition. Both operations are idempotent.For (,  is neutral (zero) and  is dominant. For ),  is neutral (one) and  is dominant.aNone"#$,.124568=>?@ACEPSX_` sAgdaThe 9 is not an application.Agda(Extended content of an interaction hole.Agda eAgda rewrite e0 | ... | enAgda=Modules: Top-level pragmas plus other top-level declarations.Agdafirst string is backend nameAgdafirst string is backend nameAgdaINLINE or NOINLINEAgda.Throws an internal error in the scope checker.Agda:For coinductive records, use pragma instead of regular  eta-equality, definition (as it is might make Agda loop).AgdaApplies to the named functionAgda@Mark a definition as injective for the pattern matching unifier.Agda*Display lhs as rhs (modifies the printer).Agda)Applies to the following function clause.AgdaApplies to the following function (and all that are mutually recursive with it) or to the functions in the following mutual block.Agda:Applies to the following data/record type or mutual block.Agda*Applies to the following data/record type.Agda  tel. M argsAgda  M {{...}}Agda~The representation type of a declaration. The comments indicate which type in the intended family the constructor targets.AgdaDAxioms and functions can be irrelevant. (Hiding should be NotHidden)Agda=Variables to be generalized, can be hidden and/or irrelevant.Agda.Record field, can be hidden and/or irrelevant.Agda#lone data signature in mutual blockAgda%lone record signature in mutual blockAgda7The optional name is a name for the record constructor.Agdanotation declaration for a nameAgdaIn  Agda.Syntax.Concrete.Definitions~ we generate private blocks temporarily, which should be treated different that user-declared private blocks. Thus the .Agda(Just type signatures or instance blocks.AgdaJust type signatures.Agda.From the parser, we get an expression for the as- %#, which we have to parse into a  %.AgdaThe content of the as -clause of the import statement.AgdaThe "as" name.AgdaCThe range of the "as" keyword. Retained for highlighting purposes.Agda3An imported name can be a module or a defined name.AgdaYThe things you are allowed to say when you shuffle names between name spaces (i.e. in import,  namespace, or open declarations).AgdavAn expression followed by a where clause. Currently only used to give better a better error message in interaction.Agdaalways  (see parser)AgdaNo where clauses.Agda Ordinary where.Agda Named where: module M where . The r flag applies to the  %J (not the module contents!) and is propagated from the parent function.Agda+No right hand side because of absurd match.Agda:Processed (operator-parsed) intermediate form of the core f ps of . Corresponds to .Agda f Agda ps AgdaRecord projection. Agda-Patterns for record indices (currently none). AgdaMain argument.AgdaNon-empty; at least one (| p).Agda;Left hand sides can be written in infix style. For example: +n + suc m = suc (n + m) (f " g) x = f (g x)@We use fixity information to see which name is actually defined.AgdaSOriginal pattern (including with-patterns), rewrite equations and with-expressions.Agdae.g.  f ps | wpsAgda rewrite e (many)Agdawith e (many)Agda\A telescope is a sequence of typed bindings. Bound variables are in scope in later types.AgdaBinding (x1 ... xn : A).Agda Let binding (let Ds) or  (open M args).AgdaA typed binding. Agda. x or {x} or .x or .{x} or {.x}!Agda. (xs : e) or {xs : e}"Agda0A lambda binding is either domain free or typed.$Agda p ! e where cs'Agda9Concrete patterns. No literals in patterns at the moment.(Agdac or x)Agda quote*Agdap p' or  p {x = p'}+Agdap1..pn before parsing operators,Agdaeg: p => p' for operator _=>_ The  Q is possibly ambiguous, but it must correspond to one of the names in the set.-Agda{p} or {x = p}.Agda{{p}} or  {{x = p}}/Agda (p)0Agda _1Agda ()2Agdax@p unused3Agda .e4Agda0, 1, etc.5Agda record {x = p; y = q}6Agdai = i1$ i.e. cubical face lattice generator7Agda..., only as left-most pattern.8Agda| p, for with-patterns.9AgdaCConcrete expressions. Should represent exactly what the user wrote.:Agdaex: x;Agdaex: 1 or "foo"<Agdaex: ? or  {! ... !}=Agdaex: _ or _A_5>Agdabefore parsing operators?Agdaex: e e, e {e}, or  e {x = e}@Agdaex: e + e The  S is possibly ambiguous, but it must correspond to one of the names in the set.AAgdaex: e | e1 | .. | enBAgdaex: {e} or {x=e}CAgdaex: {{e}} or {{x=e}}DAgdaex:  \x {y} -> e or \(x:A){y:B} -> eEAgdaex: \ ()FAgdaex: .\ { p11 .. p1a -> e1 ; .. ; pn1 .. pnz -> en }GAgdaex: e -> e or .e -> e (NYI: {e} -> e)HAgdaex:  (xs:e) -> e or  {xs:e} -> eIAgdaex: SetJAgdaex: PropKAgdaex: Set0, Set1, ..LAgdaex: Prop0, Prop1, ..MAgdaex: record {x = a; y = b}, or record { x = a; M1; M2 }NAgdaex: record e {x = a; y = b}OAgdaex:  let Ds in e+, missing body when parsing do-notation letPAgdaex: (e)QAgdaex: (| e |)RAgdaex: do x <- m1; m2SAgdaex: () or {}, only in patternsTAgdaex: x@p, only in patternsUAgdaex: .p, only in patternsVAgda!only used for printing telescopesWAgdaex: quoteGoal x in eXAgdaex:  quoteContextYAgdaex: quote, should be applied to a nameZAgdaex:  quoteTerm, should be applied to a term[Agda 'tactic solve | subgoal1 | .. | subgoalN\Agdaex: unquote&, should be applied to a term of type Term]Agdato print irrelevant things^Agdaex: a = b, used internally in the parser_Agda...$, used internally to parse patterns.nAgda\An abstraction inside a special syntax declaration (see Issue 358 why we introduce this).vAgdaWe can try to get a  Telescope from a  [LamBinding]}. If we have a type annotation already, we're happy. Otherwise we manufacture a binder with an underscore for the type.wAgdaSmart constructor for Pi: check whether the  Telescope is emptyxAgda#Computes the top-level module name.Precondition: The  has to be well-formed. This means that there are only allowed declarations before the first module declaration, typically import declarations. See y.yAgdaSplits off allowed (= import) declarations before the first non-allowed declaration. After successful parsing, the first non-allowed declaration should be a module declaration.AgdaA  is  when the whereG keyword is absent. An empty list of declarations does not count as  here.AgdaRanges are not forced.AgdaRanges are not forced.AgdaRanges are not forced.AgdaRanges are not forced.AgdaRanges are not forced.AgdaRanges are not forced.AgdaRanges are not forced.AgdaRanges are not forced.AgdaRanges are not forced.                   ! " $ # % & ' + ( ) * , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D_`      !"#$%&'420531()*+,-./6789IGJ:?;MU@QY\O=HD<>ABCEFKLNPRSTVWXZ[]^_`abcdefghijklmnopqrstuvwxyz{|9IGJ:?;MU@QY\O=HD<>ABCEFKLNPRSTVWXZ[]^_`mnopz{|" !bahijklqrcdefgstuvw'420531()*+,-./678     #$%&_`xybNone"#$,.14568=>?@ACEPSX_` AgdaPicking the appropriate set of special characters depending on whether we are allowed to use unicode or have to limit ourselves to ascii.AgdaprettyHiding info visible doc# puts the correct braces around doc according to info info and returns  visible doc% if the we deal with a visible thing.cNone"#$,.14568=>?@ACEPSX_` '9AgdaPhases to allocate CPU time to.:Agda#Happy parsing and operator parsing.;AgdaImport chasing.<AgdaReading interface files.=Agda2Scope checking and translation to abstract syntax.>Agda1Type checking and translation to internal syntax.?AgdaTermination checking.@Agda-Positivity checking and polarity computation.AAgdaInjectivity checking.BAgda!Checking for projection likeness.CAgda0Coverage checking and compilation to case trees.DAgdaGenerating highlighting info.EAgdaWriting interface files.FAgdaDeac code elimination.GAgda Subphase for ?.HAgda Subphase for ?.IAgda Subphase for ?.JAgda Subphase for ?.KAgda Subphase for ?.LAgda Subphase for ?.MAgda Subphase for ;.NAgda Subphase for E.OAgda Subphase for E.PAgda Subphase for E.QAgda Subphase for E.RAgda Subphase for :.SAgda Subphase for :.TAgda Subphase for >: free variable computation.UAgda Subphase for >!: occurs check for solving metas.VAgda Subphase for >: checking the LHSWAgda Subphase for >: checking the RHSXAgda Subphase for >: checking a type signatureYAgda Subphase for >: generalizing over variablesZAgda Subphase for >: solving instance goals[Agda Subphase for V: unification of the indices\AgdaPretty printing names.bAgda.Global variable to store benchmark statistics.cAgda=Benchmark an IO computation and bill it to the given account.dAgda>Benchmark a pure computation and bill it to the given account..789]\[ZWVUSRQPNEB=<:;X^D>Y@AO?HFLKMTJIGC_`abcd.9]\[ZWVUSRQPNEB=<:;X^D>Y@AO?HFLKMTJIGC87_`abcddNone"#$,.14568=>?@ACEHPSVX_` ݨjAgdaGeneric pattern traversal.See Y.kAgda Fold pattern.lAgda<Traverse pattern with option of post-traversal modification.mAgdaTraverse pattern.nAgdaThe next patterns are ...(This view discards PatInfo.)oAgda&Application patterns (non-empty list).pAgdaHWith patterns (non-empty list). These patterns are not prefixed with 8.qAgdaCheck for with-pattern | p.sAgda*Has the lhs an occurrence of the ellipsis ...?uAgdaCheck for ellipsis ....wAgdaConstruct the n" of the given list (if not empty).+Return the view and the remaining patterns.xAgdaKAdd applicative patterns (non-projection / non-with patterns) to the right.yAgdaAdd with-patterns to the right.zAgdaAppend patterns to ), separating with patterns from the rest.{Agda Modify the ' component in .|AgdaEffectfully modify the ' component in .}Agda)Does the LHS contain projection patterns?~AgdaHCompute a value from each subpattern and collect all values in a monoid.AgdaETraverse pattern(s) with a modification before the recursive descent.AgdaDTraverse pattern(s) with a modification after the recursive descent.Agda?Map pattern(s) with a modification after the recursive descent.Agda<Get all the identifiers in a pattern in left-to-right order.#Implemented using difference lists.Agda<Get all the identifiers in a pattern in left-to-right order.Agda9Does the pattern contain a with-pattern? (Shortcutting.)AgdaIs 8?Agda2Count the number of with-subpatterns in a pattern?AgdasCompute the context in which the ellipsis occurs, if at all. If there are several occurrences, this is an error.AgdaIs the pattern just ...?Agda!Does the lhs contain an ellipsis?kAgda>Combine a pattern and the value computed from its subpatterns.lAgda;Combine a pattern and the its recursively computed version.mAgdapre : Modification before recursion.Agdapost: Modification after recursion.Agdapre : Modification before recursion.Agdapost: Modification after recursion.jmlknpoqrstuvwxyz{|}~uvstqrnpowxyz{|}jmlk~eNone"#$&',.14568=>?@ACEHPSVX_` T AgdaA singleton type for   (except for the constructor  ).Agda"Used to define the return type of .AgdaShould sections be parsed?AgdaThe  O is possibly ambiguous, but it must correspond to one of the names in the set.AgdaRuns a parser. If sections should be parsed, then identifiers with at least two name parts are split up into multiple tokens, using \O to record the tokens' original positions within their respective identifiers.Agda)Parse a specific identifier as a NamePartAgdaKParses a split-up, unqualified name consisting of at least two name parts.The parser does not check that underscores and other name parts alternate. The range of the resulting name is the range of the first name part that is not an underscore.AgdaEither a wildcard (_E), or an unqualified name (possibly containing multiple name parts).Agda0Parse the "operator part" of the given notation.ENormal holes (but not binders) at the beginning and end are ignored.RIf the notation does not contain any binders, then a section notation is allowed.!!fNone"#$,.14568=>?@ACEPSX_` Agda,Generic traversals for concrete expressions. Note: does not go into patterns!AgdaThis corresponds to 3.AgdaThis corresponds to 3.AgdaThis is a reduce.gNone"#$,.14568=>?@ACEPSX_` 3AgdaWhile ~ and Polarities are not semigroups under disjoint union (which might fail), we get a semigroup instance for the monadic m (Fixities, Polarities)% which propagates the first error.3AgdaAdd more fixities. Throw an exception for multiple fixity declarations. OR: Disjoint union of fixity maps. Throws exception if not disjoint.AgdaGet the fixities and polarity pragmas from the current block. Doesn't go inside modules and where blocks. The reason for this is that these declarations have to appear at the same level (or possibly outside an abstract or mutual block) as their target declaration.3AgdajCompute the names defined in a declaration. We stay in the current scope, i.e., do not go into modules.  hNone"#$,.124568=>?@ACEPSX_` ;b2Agda A compressed 0, in which consecutive positions with the same  are stored together.Agda Syntax highlighting information.AgdaA 6 is a mapping from file positions to meta information.,The first position in the file has number 1.AgdaRIs the highlighting "token-based", i.e. based only on information from the lexer?AgdaThe defining module.Agda!The file position in that module.Agda Has this DefinitionSite/ been created at the defining site of the name?Agda#A pretty name for the HTML linking.AgdaKMeta information which can be associated with a character/character range.AgdaThis note, if present, can be displayed as a tool-tip or something like that. It should contain useful information about the range (like the module containing a certain identifier, or the fixity of an operator).AgdajThe definition site of the annotated thing, if applicable and known. File positions are counted from 1.AgdaIs this entry token-based?AgdaZOther aspects, generated by type checking. (These can overlap with each other and with s.)AgdahUnsolved constraint not connected to meta-variable. This could for instance be an emptyness constraint. Agda`Used for highlighting unreachable clauses, unreachable RHS (because of an absurd pattern), etc. AgdaGWhen this constructor is used it is probably a good idea to include a * explaining why the pattern is incomplete. AgdaCode which is being type-checked. NB: We put CatchallClause last so that it is overwritten by other, more important, aspects in the emacs mode.AgdaNameKind(s are figured out during scope checking.AgdaBound variable.AgdadGeneralizable variable. (This includes generalizable variables that have been generalized).Agda%Inductive or coinductive constructor.Agda Record field.Agda Module name.Agda Primitive.Agda Record type.Agda!Named argument, like x in {x = v}AgdaMacro.Agda6Syntactic aspects of the code. (These cannot overlap.) Agda Symbols like forall, =, ->, etc.!AgdaThings like Set and Prop."AgdaIs the name an operator part?#AgdaJText occurring in pragmas that does not have a more specific aspect.$Agda"Non-code contents in literate Agda%AgdaZDelimiters used to separate the Agda code blocks from the other contents in literate Agda&Agda A variant of 3 with  set to .'Agda' rs m( is a file whose positions are those in rs2, and in which every position is associated with m.(AgdaLike ', but with several  instead of only one.3AgdaMerges meta information.)Agda Merges files.*Agda.Returns the smallest position, if any, in the .+Agda Convert the E to a map from file positions (counting from 1) to meta information.,AgdaInvariant for compressed files.-Note that these files are not required to be  maximally? compressed, because ranges are allowed to be empty, and the -s in adjacent ranges are allowed to be equal.-AgdacCompresses a file by merging consecutive positions with equal meta information into longer ranges..AgdaDecompresses a compressed file./AgdaClear any highlighting info for the given ranges. Used to make sure unsolved meta highlighting overrides error highlighting.0Agda0 rs m( is a file whose positions are those in rs2, and in which every position is associated with m.1AgdaLike  singletonR, but with a list of  instead of a single one.2AgdaMerges compressed files.3Agda splitAtC p f splits the compressed file f into (f1, f2), where all the positions in f1 are < p, and all the positions in f2 are >= p.5Agda.Returns the smallest position, if any, in the .K     " %#!$&'()*+,-./012345K" %#!$     &'()*+,-./013452iNone"#$,.14568=>?@ACEPSX_` _bQAgdaYCallback fuction to call when there is a response to give to the interactive frontend.Note that the response is given in pieces and incrementally, so the user can have timely response even during long computations.Typical Q functions:Convert the response into a g representation and print it on standard output (suitable for inter-process communication).LPut the response into a mutable variable stored in the closure of the Q< function. (suitable for intra-process communication).RAgdaGive action result"Comment derived from agda2-mode.elIf R2 is 'Give_String s', then the goal is replaced by sM, and otherwise the text inside the goal is retained (parenthesised if R is T).VAgdaStatus information.XAgda!Are implicit arguments displayed?YAgda.Has the module been successfully type checked?ZAgda4Info to display at the end of an interactive command[Agda3Strings are the warnings and the (non-fatal) errors]Agda>Strings are the goals, the warnings and the (non-fatal) errors_AgdaTWhen an error message is displayed this constructor should be used, if appropriate.`Agda`V denotes two different types of errors TODO: split these into separate constructorsaAgdaa, denotes either an error or a success (when w< is present) TODO: split these into separate constructorslAgda,There are two kinds of "make case" commands.oAgdaShould token-based highlighting be removed in conjunction with the application of new highlighting (in order to reduce the risk of flicker)?pAgda7Yes, remove all token-based highlighting from the file.qAgdaNo.rAgda'Responses for any interactive interfaceNote that the response is given in pieces and incrementally, so the user can have timely response even during long computations.yAgda(Solution for one or more meta-variables.{Agda)The integer is the message's debug level.}Agda%Clear highlighting of the given kind.~AgdaAA command sent when an abort command has completed successfully.Agda The default QS function prints certain things to stdout (other things generate internal errors)./QRSTUVWXYZ[\]^_`abcdefghijklmnoqprstuvwxyz{|}~/rstuvwxyz{|}~oqplmnZ[\]^_`abcdefghijkVWXYRSTUQjNone"#$,.14568=>?@ACEMPSX_` z Agda;Result of comparing a candidate with the current favorites.AgdaxGreat, you are dominating a possibly (empty list of favorites) but there is also a rest that is not dominated. If null dominated, then  notDominated2 is necessarily the complete list of favorites.Agda.Sorry, but you are dominated by that favorite.Agda!A list of incomparable favorites.AgdaGosh, got some pretty a here, compare with my current favorites! Discard it if there is already one that is better or equal. (Skewed conservatively: faithful to the old favorites.) If there is no match for it, add it, and dispose of all that are worse than a.FWe require a partial ordering. Less is better! (Maybe paradoxically.)AgdaCompare a new set of favorites to an old one and discard the new favorites that are dominated by the old ones and vice verse. (Skewed conservatively: faithful to the old favorites.) 'compareFavorites new old = (new', old')Agda)After comparing, do the actual insertion.Agda%Compare, then insert accordingly. :insert a l = insertCompared a l (compareWithFavorites a l)Agda=Insert all the favorites from the first list into the second.AgdaConstruct favorites from elements of a partial order. The result depends on the order of the list if it contains equal elements, since earlier seen elements are favored over later seen equals. The first element of the list is seen first.Agda forms a 3 under  and 'union.AgdaLEquality checking is a bit expensive, since we need to sort! Maybe use a Set! of favorites in the first place?kNone"#$,.14568=>?@ACEPSX_` l Agda,A finite map, represented as a set of pairs.%Invariant: at most one value per key.AgdaO(n). Reexport 3.Agda9O(n). Get the domain (list of keys) of the finite map.AgdaJO(1). Add a new binding. Assumes the binding is not yet in the list.AgdaO(n). Update the value at a key. The key must be in the domain of the finite map. Otherwise, an internal error is raised.AgdayO(n). Delete a binding. The key must be in the domain of the finite map. Otherwise, an internal error is raised.AgdaO(n). Update the value at a key with a certain function. The key must be in the domain of the finite map. Otherwise, an internal error is raised.Agda<O(n). Map over an association list, preserving the order.Agda{O(n). If called with a effect-producing function, violation of the invariant could matter here (duplicating effects).AgdaO(n). Named in analogy to Z[u. To preserve the invariant, it is sufficient that the key transformation is injective (rather than monotonic).  lNone"#$&',.124568=>?@ACEPSX_` +lAgdanUsed for instance arguments to check whether a name is in scope, but we do not care whether is is ambiguousAgda9Ambiguous constructors, projections, or pattern synonyms.Agda9Local variable bound by , , module telescope, pattern, let.Agda&Function, data/record type, postulate.AgdaBRecord field name. Needs to be distinguished to parse copatterns.Agda Data or record constructor name.AgdaName of pattern synonym.Agda Unbound name.AgdaWhat kind of binder?Agda-A decoration of abstract syntax module names.AgdaThe resolved module name.Agda&Explanation where this name came from.AgdaA decoration of X\.AgdaThe resolved qualified name.Agda6The kind (definition, constructor, record field etc.).Agda&Explanation where this name came from.AgdajAdditional information needed during scope checking. Currently used for generalized data/record params.AgdaWhere does a name come from?=This information is solely for reporting to the user, see ].AgdaDefined in this module.AgdaImported from another module.Agda!Imported by a module application.AgdaqFor the sake of parsing left-hand sides, we distinguish constructor and record field names from defined names.AgdaConstructor name.AgdaRecord field name.AgdaOrdinary defined name.AgdaName of a pattern synonym.AgdaName to be generalizedAgda&Generalizable variable from a let openAgdaName of a macroAgdaA name that can only be quoted.Agda-Type class for some dependent-types trickery.Agda#Set of types consisting of exactly  and ..A GADT just for some dependent-types trickery.AgdaA  NameSpace contains the mappings from concrete names that the user can write to the abstract fully qualified names that the type checker wants to read.Agda0Maps concrete names to a list of abstract names.Agda>Maps concrete module names to a list of abstract module names.AgdaA local variable can be shadowed by an import. In case of reference to a shadowed variable, we want to report a scope error.AgdaUnique ID of local variable.Agda/Kind of binder used to introduce the variable (, let, ...).AgdaTIf this list is not empty, the local variable is shadowed by one or more imports.AgdajFor each bound variable, we want to know whether it was bound by a , , module telescope, pattern, or let.Agda (currently also used for  and module parameters)Agda f ... =Agda  let ... inAgdaLocal variables.AgdaThe complete information about the scope at a particular program point includes the scope stack, the local variables, and the context precedence.AgdaMaps concrete names to fixitiesAgda!Maps concrete names to polaritiesAgdaSee r.Agda#Things not exported by this module.Agda+Things defined and exported by this module.Agda1Things from open public, exported by this module.AgdauVisible (as qualified) from outside, but not exported when opening the module. Used for qualified constructors.AgdaTA scope is a named collection of names partitioned into public and private names.AgdaGet a  from .Agda A lens for Agda`Monadic' lens (Functor sufficient).Agda3Shadow a local name by a non-empty list of imports.Agda1Treat patternBound variable as a module parameterAgda*Project name of unshadowed local variable.Agda%Get all locals that are not shadowed  by imports.Agda Lens for .Agda Lens for . Agda inNameSpace> selects either the name map or the module name map from a X. What is selected is determined by result type (using the dependent-type trickery). Agda!A list containing all name kinds. AgdaVan Laarhoven lens on .AgdaVan Laarhoven lens on .AgdaThe empty name space.Agda9Map functions over the names and modules in a name space.AgdaZip together two name spaces.Agda&Map monadic function over a namespace.AgdaThe empty scope.AgdaThe empty scope info.Agda4Map functions over the names and modules in a scope.AgdaSame as 2 but applies the same function to all name spaces.AgdaSame as 7 but applies the function only on the given name space.Agda<Map monadic functions over the names and modules in a scope.AgdaSame as M but applies the same function to both the public and private name spaces.AgdaUZip together two scopes. The resulting scope has the same name as the first scope.AgdaSame as M but applies the same function to both the public and private name spaces.Agda&Recompute the inScope sets of a scope.AgdaFilter a scope keeping only concrete names matching the predicates. The first predicate is applied to the names and the second to the modules.AgdaReturn all names in a scope.!Agda&Returns the scope's non-private names.%Agda=Merge two scopes. The result has the name of the first scope.&Agda\Merge a non-empty list of scopes. The result has the name of the first scope in the list.'AgdaaMove all names in a scope to the given name space (except never move from Imported to Public).(AgdaUpdate a particular name space.)AgdaModify a particular name space.*AgdaAdd names to a scope.+AgdaAdd a name to a scope.,AgdaRemove a name from a scope. Caution: does not update the nsInScope set. This is only used by rebindName and in that case we add the name right back (but with a different kind).-AgdaAdd a module to a scope./Agda Apply an P to a scope.0Agda%Rename the abstract names in a scope.1Agda%Remove private name space of a scope.Should be a right identity for !. >exportedNamesInScope . restrictPrivate == exportedNamesInScope.2Agda9Remove private things from the given module from a scope.3AgdaCRemove names that can only be used qualified (when opening a scope)4Agda3Disallow using generalized variables from the scope5Agda.Add an explanation to why things are in scope.6Agda5Get the public parts of the public modules of a scope:AgdaoCompute a flattened scope. Only include unqualified names or names qualified by modules in the first argument.;Agda:Get all concrete names in scope. Includes bound variables.<AgdaLook up a name in the scope?AgdahFind the concrete names that map (uniquely) to a given abstract name. Sort by length, shortest first.BAgdarFind the concrete names that map (uniquely) to a given abstract qualified name. Sort by length, shortest first.DAgdaoFind the concrete names that map (uniquely) to a given abstract module name. Sort by length, shortest first.FAgda+Add first string only if list is non-empty.MAgdaAWe show shadowed variables as prefixed by a ".", as not in scope.      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFmNone"#$,.14568=>?@ACEPSX_` ~Agda.Types which Geniplate should not descend into.AgdaA localised instance of 3. The generated 3. functions neither descend into the types in ~*, nor into the types in the list argument.AgdaA localised instance of 3. The generated 3. functions neither descend into the types in ~*, nor into the types in the list argument.~~nNone"#$,.124568=>?@ACEMPSX_` aAgda:Has the constructor pattern a dotted (forced) constructor?AgdaDotted constructor.AgdaOrdinary constructor.AgdaConstructor pattern info.AgdaEDoes this pattern come form the eta-expansion of an implicit pattern?Agda;For a general pattern we remember the source code position.AgdaUThe range of the "as" and "to" keywords, if any. Retained for highlighting purposes.AgdaAThe "as" module name, if any. Retained for highlighting purposes.Agda Retained for abstractToConcrete of .AgdaInformation about applicationAgda6Do we prefer a appbda argument with or without parens?Agda-Default is system inserted and prefer parens.Agda with no range information.AgdaSame as  mkDefInfo but where we can also give the  IsInstanceAgdaEmpty range for patterns.AgdaDefault value for .::oNone"#$,.14568=>?@ACEPSX_` U$3AgdaTransposable things.Agda m extracts the diagonal of m.fFor non-square matrices, the length of the diagonal is the minimum of the dimensions of the matrix.Agda6Type of matrices, parameterised on the type of values.aSparse matrices are implemented as an ordered association list, mapping coordinates to values. AgdaDimensions of the matrix. Agda!Association of indices to values. Agda%Type of matrix indices (row, column). Agda Row index, 1 <= row <= rows.Agda Column index 1 <= col <= cols.AgdaSize of a matrix.AgdaNumber of rows, >= 0.AgdaNumber of columns, >= 0.3Agda Convert a I to a set of bounds suitable for use with the matrices in this module.Agda3 iff the matrix is square.AgdaReturns 3 iff the matrix is empty.Agda5Compute the matrix size of the union of two matrices.3Agda<Compute the matrix size of the intersection of two matrices.Agda#Constructs a matrix from a list of (index, value) -pairs. O(n) where n is size of the list.!Precondition: indices are unique.Agda sz rsL constructs a matrix from a list of lists of values (a list of rows). O(size) where size = rows cols.Precondition: 3 rs 3~  sz and 3 (( sz 3~) . 3) rs.Agda6Converts a sparse matrix to a sparse list of rows. O(n) where n1 is the number of non-zero entries of the matrix."Only non-empty rows are generated.3Agda`Turn a sparse vector into a vector by inserting a fixed element at the missing positions. O(size) where size is the dimension of the vector.Agda-Converts a matrix to a list of row lists. O(size) where size = rows cols.Agda<Returns 'Just b' iff it is a 1x1 matrix with just one entry b. O(1).AgdaAGeneral pointwise combination function for association lists.  O(n1 + n2) where ni- is the number of non-zero element in matrix i.In zipAssocWith fs gs f g h l l',fs* is possibly more efficient version of 3Z ( (i, a) -> (i,)  $ f a), and same for gs and g.3Agda Instance of $ which keeps longer assoc lists.  O(n1 + n2).Agda?General pointwise combination function for sparse matrices.  O(n1 + n2).Agda (+) m1 m2 adds m1 and m2, using (+) to add values.  O(n1 + n2).Returns a matrix of size  m1 m2.Agda f m1 m2! build the pointwise conjunction m1 and m2 . Uses f to combine non-zero values.  O(n1 + n2).Returns a matrix of size  infSize m1 m2.Agda"Association list intersection.  O(n1 + n2). AinterAssocWith f l l' = { (i, f a b) | (i,a) " l and (i,b) " l' }HUsed to combine sparse matrices, it might introduce zero elements if f( can return zero for non-zero arguments. Agda  semiring m1 m2 multiplies matrices m1 and m2). Uses the operations of the semiring semiring" to perform the multiplication.0O(n1 + n2 log n2 + (i <= r1) (j <= c2) d(i,j)) where r1$ is the number of non-empty rows in m1 and c2' is the number of non-empty columns in m2 and d(i,j)Q is the bigger one of the following two quantifies: the length of sparse row i in m1$ and the length of sparse column j in m2.Given dimensions  m1 : r1 c1 and  m2 : r2 c2, a matrix of size r1 c2* is returned. It is not necessary that c1 == r2, the matrices are implicitly patched with zeros to match up for multiplication. For sparse matrices, this patching is a no-op.!Agda! x m adds a new column to m`, after the columns already existing in the matrix. All elements in the new column get set to x."Agda" x m adds a new row to mY, after the rows already existing in the matrix. All elements in the new row get set to x.$AgdaNPointwise comparison. Only matrices with the same dimension are comparable.%AgdaDiagonal of sparse matrix.O(n) where n2 is the number of non-zero elements in the matrix.'AgdaMatrix transposition. O(n log n) where n2 is the number of non-zero elements in the matrix.(AgdaTransposing coordinates.)AgdaSize of transposed matrix.AgdaOnly left map remaining.AgdaOnly right map remaining.Agda!Element only present in left map.Agda"Element only present in right map.AgdaElement present in both maps.3Agda!Element only present in left map.Agda"Element only present in right map.AgdaElement present in both maps.Agda$Element only present in left matrix.Agda%Element only present in right matrix.Agda!Element present in both matrices.AgdaResult counts as zero?      !"      "!pNone"#$,.14568=>?@ACEPSX_` H6Agda\A partial order, aimed at deciding whether a call graph gets worse during the completion.8Agda:In the paper referred to above, there is an order R with : 3 Le 3 Lt.This is generalized to : 3 'Decr k' where Decr 1 replaces Lt and Decr 0 replaces Le. A negative decrease means an increase. The generalization allows the termination checker to record an increase by 1 which can be compensated by a following decrease by 2 which results in an overall decrease.However, the termination checker of the paper itself terminates because there are only finitely many different call-matrices. To maintain termination of the terminator we set a cutoff point which determines how high the termination checker can count. This value should be set by a global or file-wise option.See Call for more information.9TODO: document orders which are call-matrices themselves.9Agda2Decrease of callee argument wrt. caller parameter.The Bool indicates whether the decrease (if any) is usable. In any chain, there needs to be one usable decrease. Unusable decreases come from SIZELT constraints which are not in inductive pattern match or a coinductive copattern match. See issue #2331.UPDATE: Andreas, 2017-07-26: Feature #2331 is unsound due to size quantification in terms. While the infrastructure for usable/unusable decrease remains in place, no unusable decreases are generated by TermCheck.:AgdaENo relation, infinite increase, or increase beyond termination depth.;Agda&Matrix-shaped order, currently UNUSED.<Agda$Raw increase which does not cut off.=Agda$Raw decrease which does not cut off.?AgdaSmart constructor for Decr k :: Order which cuts off too big values.Possible values for k:  - ?cutoff 3 k 3 ?cutoff + 1.@AgdaRSmart constructor for matrix shaped orders, avoiding empty and singleton matrices.BAgdale, lt,  decreasing, unknown4: for backwards compatibility, and for external use.CAgdaUsable decrease.FAgdaDecreasing and usable?GAgdaHMatrix-shaped order is decreasing if any diagonal element is decreasing.HAgdaMultiplication of 8.s. (Corresponds to sequential composition.)3Agda collapse mWe assume that mD codes a permutation: each row has at most one column that is not Unknown.To collapse a matrix into a single value, we take the best value of each column and multiply them. That means if one column is all UnknownR, i.e., no argument relates to that parameter, then the collapsed value is also Unknown.,This makes order multiplication associative.3Agda'Can two matrices be multplied together?JAgda+The supremum of a (possibly empty) list of 8;s. More information (i.e., more decrease) is bigger. :# is no information, thus, smallest.3Agda(8, 3, H) forms a semiring, with : as zero and Le as one.KAgda%The infimum of a (non empty) list of 8$s. Gets the worst information. :& is the least element, thus, dominant.3AgdaPick the worst information.LAgdaWe use a record for semiring instead of a type class since implicit arguments cannot occur in instance constraints, like +instance (?cutoff :: Int) => SemiRing Order.NAgdaInformation order: :M is least information. The more we decrease, the more information we have.When having comparable call-matrices, we keep the lesser one. Call graph completion works toward losing the good calls, tending towards Unknown (the least information).PAgda/We assume the matrices have the same dimension.QAgdaIt does not get worse then ` increase'C. If we are still decreasing, it can get worse: less decreasing.678:9;<=>?@ABCDEFGHIJKL8:9;?<=>HJKLBCD@IEFG67AqNone"#$,.14568=>?@ACEMPSX_` UAgdaVSets of incomparable call matrices augmented with path information. Use overloaded , , /, 3.XAgda,Call matrix augmented with path information.ZAgda"The matrix of the (composed call).[AgdaMeta info, like call path.\Agda0Call matrix multiplication and call combination._AgdaCall matrices.A call matrix for a call f --> g has dimensions  ar(g) ar(f).9Each column corresponds to one formal argument of caller f9. Each row corresponds to one argument in the call to g.FIn the presence of dot patterns, a call argument can be related to several different formal arguments of f. See e.g. testsucceedDotPatternTermination.agda:  data D : Nat -> Set where cz : D zero c1 : forall n -> D n -> D (suc n) c2 : forall n -> D n -> D n f : forall n -> D n -> Nat f .zero cz = zero f .(suc n) (c1 n d) = f n (c2 n d) f n (c2 .n d) = f n d 'Call matrices (without guardedness) are  -1 -1 n < suc n and n < c1 n d ? = c2 n d <= c1 n d = -1 n <= n and n < c2 n d ? -1 d < c2 n d `Here is a part of the original documentation for call matrices (kept for historical reasons):This datatype encodes information about a single recursive function application. The columns of the call matrix stand for sourceD function arguments (patterns). The rows of the matrix stand for target function arguments. Element (i, j)0 in the matrix should be computed as follows:C (less than) if the j-th argument to the target; function is structurally strictly smaller than the i-th pattern.B (less than or equal) if the j-th argument to the target+ function is structurally smaller than the i-th pattern.D otherwise.bAgda0Call matrix indices = function argument indices.Machine integer 3^ is sufficient, since we cannot index more arguments than we have addresses on our machine.cAgdaNon-augmented call matrix.dAgdaInsert into a call matrix set.eAgdaUnion two call matrix sets.fAgda/Convert into a list of augmented call matrices.iAgdaCall matrix multiplication.f --(m1)--> g --(m2)--> h is combined to f --(m2   m1)--> h9Note the reversed order of multiplication: The matrix c1 of the second call g-->h in the sequence  f-->g-->h is multiplied with the matrix c2 of the first call.Preconditions: m1 has dimensions  ar(g) ar(f). m2 has dimensions  ar(h) ar(g).Postcondition:  m1 >*< m2 has dimensions  ar(h) ar(f).kAgda%Augmented call matrix multiplication.pAgda1Call matrix set product is the Cartesian product.UVWXY[Z\]^_`abcdefb_`a^\]XY[ZcUVWdefrNone"#$,.14568=>?@ACEMPSX_` AgdagA call graph is a set of calls. Every call also has some associated meta information, which should be 3bal so that the meta information for different calls can be combined when the calls are combined.AgdaCalls are edges in the call graph. It can be labelled with several call matrices if there are several pathes from one function to another.AgdaCall graph nodes.Machine integer 3T is sufficient, since we cannot index more than we have addresses on our machine.Agda!Make a call with a single matrix.AgdaMake a call with empty cinfo.Agda@Returns all the nodes with incoming edges. Somewhat expensive. O(e).AgdaMConverts a call graph to a list of calls with associated meta information.AgdaMConverts a list of calls with associated meta information to a call graph.Agda#Takes the union of two call graphs.Agda!Inserts a call into a call graph.3AgdaCall graph combination.Application of ] to all pairs (c1,c2) for which  c1 =  c2.)Agda"Call graph comparison. A graph cs' is `worse' than csy if it has a new edge (call) or a call got worse, which means that one of its elements that was better or equal to Le moved a step towards Un.A call graph is complete if combining it with itself does not make it any worse. This is sound because of monotonicity: By combining a graph with itself, it can only get worse, but if it does not get worse after one such step, it gets never any worse. cs completes the call graph csB. A call graph is complete if it contains all indirect calls; if f -> g and g -> h are present in the graph, then f -> h should also be present.Agda?Displays the recursion behaviour corresponding to a call graph.Agda is a monoid under .Agda: checks whether the call graph is completely disconnected.]]sNone"#$,.14568=>?@ACEPSX_` Agda2TODO: This comment seems to be partly out of date. cs( checks if the functions represented by cs terminate. The call graph cs should have one entry (&) per recursive function application.3 perms: is returned if the functions are size-change terminating.,If termination can not be established, then 3 problems is returned instead. Here problemsG contains an indication of why termination cannot be established. See lexOrder for further details.KNote that this function assumes that all data types are strictly positive.The termination criterion is taken from Jones et al. In the completed call graph, each idempotent call-matrix from a function to itself must have a decreasing argument. Idempotency is wrt. matrix multiplication.This criterion is strictly more liberal than searching for a lexicographic order (and easier to implement, but harder to justify).AgdaA call c! is idempotent if it is an endo ( == ) of order 1. (Endo-calls of higher orders are e.g. argument permutations). We can test idempotency by self-composition. Self-composition c >*< c: should not make any parameter-argument relation worse.tNone"#$,.14568=>?@ACEPSX_` <AgdaSometimes regular expressions aren't enough. Alex provides a way to do arbitrary computations to see if the input matches. This is done with a lex predicate.AgdanIn the lexer, regular expressions are associated with lex actions who's task it is to construct the tokens.Agda#This is what the lexer manipulates.AgdaFile.AgdaCurrent position.AgdaCurrent input.AgdaPreviously read character.Agda A lens for .Agda,Get the previously lexed character. Same as L. Alex needs this to be defined to handle "patterns with a left-context".Agda,Returns the next character, and updates the  value.]This function is not suitable for use by Alex 2, because it can return non-ASCII characters.Agda'Returns the next byte, and updates the  value.A trick is used to handle the fact that there are more than 256 Unicode code points. The function translates characters to bytes in the following way:HWhitespace characters other than '\t' and '\n' are translated to ' '.8Non-ASCII alphabetical characters are translated to 'z'.;Other non-ASCII printable characters are translated to '+'.&Everything else is translated to '\1'.WNote that it is important that there are no keywords containing 'z', '+', ' ' or '\1'.*This function is used by Alex (version 3).AgdaConjunction of s.AgdaDisjunction of s.Agda Negation of s.uNone"#$,.14568=>?@ACEMPSX_`  AgdaIThe LookAhead monad is basically a state monad keeping with an extra , wrapped around the   monad.Agda8Throw an error message according to the supplied method.Agda$Get the current look-ahead position.AgdaSet the look-ahead position.AgdaLift a computation in the   monad to the  monad.AgdaBLook at the next character. Fails if there are no more characters.AgdaAConsume all the characters up to the current look-ahead position.Agda-Undo look-ahead. Restores the input from the  .Agda!Consume the next character. Does  followed by .AgdaDo a case on the current input string. If any of the given strings match we move past it and execute the corresponding action. If no string matches, we execute a default action, advancing the input one character. This function only affects the look-ahead position.AgdaSame as  but takes the initial character from the first argument instead of reading it from the input. Consequently, in the default case the input is not advanced.AgdaRun a 7 computation. The first argument is the error function.  vNone"#$,.14568=>?@ACEPSX_` ) AgdaALex a string literal. Assumes that a double quote has been lexed.AgdazLex a character literal. Assumes that a single quote has been lexed. A character literal is lexed in exactly the same way as a string literal. Only before returning the token do we check that the lexed string is of length 1. This is maybe not the most efficient way of doing things, but on the other hand it will only be inefficient if there is a lexical error.3AgdaCustom error function.3AgdamThe general function to lex a string or character literal token. The character argument is the delimiter (" for strings and ' for characters).3AgdaoThis is where the work happens. The string argument is an accumulating parameter for the string being lexed.3AgdaA string gap consists of whitespace (possibly including line breaks) enclosed in backslashes. The gap is not part of the resulting string.3AgdaLex a single character.3Agda?Lex an escaped character. Assumes the backslash has been lexed.3Agda$Read a number in the specified base.3AgdaSame as 3$ but with an accumulating parameter.3AgdaThe escape codes.yNone"#$,.14568=>?@ACEPSX_` 2DAgda Should comment tokens be output?Agda Should comment tokens be output?Agda,Manually lexing a block comment. Assumes an  open comment< has been lexed. In the end the comment is discarded and " is called to lex a real token.Agda Lex a hole ( {! ... !}#). Holes can be nested. Returns    .AgdaSkip a block of text enclosed by the given open and close strings. Assumes the first open string has been consumed. Open-close pairs may be nested.zNone"#$,.14568=>?@ACEFPSX_` Mz AgdaCThis is the initial state for parsing a regular, non-literate file.Agda8The layout state. Entered when we see a layout keyword (3) and exited either when seeing an open brace ( openBrace) or at the next token ()./Update: we don't use braces for layout anymore.3AgdaThe state inside a pragma.3AgdayThe state inside a FOREIGN pragma. This needs to be different so that we don't lex further strings as pragma keywords.AgdaWe enter this state from  when the token following a layout keyword is to the left of (or at the same column as) the current layout context. Example: )data Empty : Set where foo : Empty -> Nat(Here the second line is not part of the where8 clause since it is has the same indentation as the dataD definition. What we have to do is insert an empty layout block {} after the where;. The only thing that can happen in this state is that ] is executed, generating the closing brace. The open brace is generated when entering by .AgdaThis state is entered at the beginning of each line. You can't lex anything in this state, and to exit you have to check the layout rule. Done with .Agda]This state can only be entered by the parser. In this state you can only lex the keywords using, hiding, renaming and to. Moreover they are only keywords in this particular state. The lexer will never enter this state by itself, that has to be done in the parser.AgdaHReturn the next token. This is the function used by Happy in the parser.  lexer k =  >>= k3Agda&Do not use this function; it sets the   to 3.Agda3This is the main lexing function generated by Alex.  {None"#$,.14568=>?@ACEFPSX_`h t?3AgdaParsed attribute.3AgdaRange includes the @.3Agda5Concrete, user written attribute for error reporting.3AgdaParsed attribute.Agda1Parse the token stream. Used by the TeX compiler.Agda3Parse an expression. Could be used in interactions.AgdaNParse an expression followed by a where clause. Could be used in interactions.AgdaParse a module.3AgdaRequired by Happy.3AgdaGrab leading OPTIONS pragmas.3AgdaInsert a top-level module if there is none. Also fix-up for the case the declarations in the top-level module are not indented (this is allowed as a special case).3AgdaCreate a name from a string.3Agda.Create a qualified name from a list of strings3AgdaCreate a qualified name from a string (used in pragmas). Range of each name component is range of whole string. TODO: precise ranges!3AgdaPolarity parser.3AgdaMatch a particular name.3Agda'Build a forall pi (forall x y z -> ...)3Agda+Converts lambda bindings to typed bindings.3AgdaBuild a do-statement3Agda=Check that an import directive doesn't contain repeated namesAgdapBreaks up a string into substrings. Returns every maximal subsequence of zero or more characters distinct from 3. splitOnDots "" == [""] splitOnDots "foo.bar" == ["foo", "bar"] splitOnDots ".foo.bar" == ["", "foo", "bar"] splitOnDots "foo.bar." == ["foo", "bar", ""] splitOnDots "foo..bar" == ["foo", "", "bar"]3AgdaReturns 3= iff the name is a valid Haskell (hierarchical) module name.3Agda)Turn an expression into a left hand side.3AgdaUTurn an expression into a pattern. Fails if the expression is not a valid pattern.3AgdaUTurn an expression into a name. Fails if the expression is not a valid identifier.3AgdaParse an attribute.3Agda%Apply an attribute to thing (usually v). This will fail if one of the attributes is already set in the thing to something else than the default value.3Agda#Apply attributes to thing (usually ). Expects a reversed list of attributes. This will fail if one of the attributes is already set in the thing to something else than the default value.3AgdarReport a parse error if two attributes in the list are of the same kind, thus, present conflicting information.3AgdaEReport an attribute as conflicting (e.g., with an already set value).3AgdaZReport attributes as conflicting (e.g., with each other). Precondition: List not emtpy.39 39 wNone"#$,.14568=>?@ACEPSX_` Agda<True if the given state appears somewhere on the state stackAgda&True if we are at the end of the file.AgdaHTrue when the given character is the next character of the input string.AgdaParse a literal.Agda7Parse an identifier. Identifiers can be qualified (see Name). Example:  Foo.Bar.fAgdaParse a   token.AgdaParse a   token, triggers layout for /.Agda8Exit the current state throwing away the current lexeme.Agda3Enter a new state throwing away the current lexeme.Agda4Exit the current state and perform the given action.Agda/Enter a new state and perform the given action.Agda.Enter a new state without consuming any input.Agda)Executed for layout keywords. Enters the ( state and performs the given action.AgdaLike ', but applies a function to the string.AgdaParse a token from an ~ and the lexed string.Agda(The most general way of parsing a token.Agda-Scan the input to find the next token. Calls L. This is the main lexing function where all the work happens. The function B, used by the parser is the continuation version of this function.3Agda%Called at the end of a file. Returns  .3Agda1Set the current input and lex a new token (calls ).Agda3Return a token without looking at the lexed string.Agda2Exit the current state without consuming any input3Agda Parse a possibly qualified name.  xNone"#$,.14568=>?@ACEPSX_` oAgda&This action is only executed from the / state. It will exit this state, enter the \ state, and return a virtual close brace (closing the empty layout block started by ).AgdaJStart a new layout context. This is one of two ways to get out of the  state (the other is #). There are two possibilities:hThe current token is to the right of the current layout context (or we're in a no layout context).WThe current token is to the left of or in the same column as the current context.In the first case everything is fine and we enter a new layout context at the column of the current token. In the second case we have an empty layout block so we enter the U state. In both cases we return a virtual open brace without consuming any input.@Entering a new state when we know we want to generate a virtual {} may seem a bit roundabout. The thing is that we can only generate one token at a time, so the way to generate two tokens is to generate the first one and then enter a state in which the only thing you can do is generate the second one.Agda/Executed for the first token in each line (see c). Checks the position of the token relative to the current layout context. If the token is to the leftZ : Exit the current context and a return virtual close brace (stay in the  state). same column : Exit the / state and return a virtual semi colon. to the right : Exit the  state and continue lexing.DIf the current block doesn't use layout (i.e. it was started by %) all positions are considered to be  to the right.Agda$Executed upon lexing an open brace ('{'). Enters the   context.Agda$Executed upon lexing a close brace ('}'). Exits the current layout context. This might look a bit funny--the lexer will happily use a close brace to close a context open by a virtual brace. This is not a problem since the parser will make sure the braces are appropriately matched.3AgdaMCompute the relative position of a location to the current layout context.|None"#$,.124568=>?@ACEMPSX_` oAgdaThe size of a term is roughly the number of nodes in its syntax tree. This number need not be precise for logical correctness of Agda, it is only used for reporting (and maybe decisions regarding performance).'Not counting towards the term size are:sort and color annotations, projections.AgdaKPick the better name suggestion, i.e., the one that is not just underscore.Agda#Constructing a singleton telescope.Agda Drop the types from a telescope.AgdaTelescope as list. AgdaView type as path type. Agdareduced AgdaSort of this type.Agda Builtin PATH.AgdaHiddenAgdaHiddenAgda NotHiddenAgda NotHiddenAgdaView type as equality type.AgdareducedAgdaSort of this type.AgdaBuiltin EQUALITY.AgdaHidden. Empty or Level.AgdaHiddenAgda NotHiddenAgda NotHiddenAgdaSubstitutions.AgdaIdentity substitution.   " IdS :  AgdaDEmpty substitution, lifts from the empty context. First argument is !(throwImpossible (Impossible "srcfullAgdaSyntaxInternal.hs" 610))K. Apply this to closed terms you want to use in a non-empty context.  " EmptyS : ()!AgdaSubstitution extension, `cons'. S  " u : A  "  :  ----------------------  " u :#  : , A "Agda/Strengthening substitution. First argument is !(throwImpossible (Impossible "srcfullAgdaSyntaxInternal.hs" 623))i. Apply this to a term which does not contain variable 0 to lower all de Bruijn indices by one. Y  "  :  ---------------------------  " Strengthen  : , A #Agda8Weakning substitution, lifts to an extended context. I  "  :  ------------------- ,  " Wk ||  :  $Agda9Lifting substitution. Use this to go under a binder. Lift 1  == var 0 :# Wk 1 . X  "  :  ------------------------- ,  " Lift ||  : ,  %Agda7Extract pattern variables in left-to-right order. A 5+ is also treated as variable (see docu for F).'AgdaThe ConPatternInfo= states whether the constructor belongs to a record type (Just) or data type (Nothing). In the former case, the  PatOrigin` says whether the record pattern orginates from the expansion of an implicit pattern. The Type is the type of the whole record pattern. The scope used for the type is given by any outer scope plus the clause's telescope (J).)AgdaNothing if data constructor. Just if record constructor.*Agda[Should the match block on non-canonical terms or can it proceed to the catch-all clause?+AgdaAThe type of the whole constructor pattern. Should be present (Just]) if constructor pattern is is generated ordinarily by type-checking. Could be absent (Nothing]) if pattern comes from some plugin (like Agsy). Needed e.g. for with-clause stripping.,Agda;Lazy patterns are generated by the forcing translation (^@) and are dropped by the clause compiler (TODO: not yet) (_) when the variables they bind are unused. The GHC backend compiles lazy matches to lazy patterns in Haskell (TODO: not yet)..Agda+Type used when numbering pattern variables.3Agda7Patterns are variables, constructors, or wildcards. QName is used in ConP rather than Name since a constructor might come from a particular namespace. This also meshes well with the fact that values (i.e. the arguments we are matching with) use QName.4Agda x5Agda .t6Agdac ps= The subpatterns do not contain any projection copatterns.7AgdaE.g. 5, "hello".8Agda1Projection copattern. Can only appear by itself.9AgdaPath elimination pattern, like VarP but keeps track of endpoints.:Agda:Used for HITs, the QName should be the one from primHComp.;Agda@Origin of the pattern: what did the user write in this position?<AgdaPattern inserted by the system=AgdaPattern generated by case split>AgdaUser wrote a variable pattern?AgdaUser wrote a dot pattern@AgdaUser wrote a wildcard patternAAgda User wrote a constructor patternBAgdaUser wrote a record patternCAgdaUser wrote a literal patternDAgdaUser wrote an absurd patternEAgdaPattern variables.FAgda3A clause is a list of patterns and the clause body. The telescope contains the types of the pattern variables and the de Bruijn indices say how to get from the order the variables occur in the patterns to the order they occur in the telescope. The body binds the variables in the order they appear in the telescope. <clauseTel ~ permute clausePerm (patternVars namedClausePats)8Terms in dot patterns are valid in the clause telescope.eFor the purpose of the permutation and the body dot patterns count as variables. TODO: Change this!JAgda9: The types of the pattern variables in dependency order.KAgda " ps". The de Bruijn indices refer to .LAgdaJust v with  " v for a regular clause, or Nothing for an absurd one.MAgda " t. The type of the rhs under  clauseTel. Used, e.g., by  TermCheck . Can be B if we encountered an irrelevant projection pattern on the lhs.NAgda%Clause has been labelled as CATCHALL.OAgdaDClause has been labelled as unreachable by the coverage checker. NothingH means coverage checker has not run yet (clause may be unreachable).  Just False% means clause is not unreachable.  Just True means clause is unreachable.PAgdaNamed pattern arguments.QAgdaR t without the t.RAgda4Something where a meta variable may block reduction.XAgdaEven if we are not stuck on a meta during reduction we can fail to reduce a definition by pattern matching for another reason.YAgdaThe ' is neutral and blocks a pattern match.ZAgda<Not enough arguments were supplied to complete the matching.[Agda2We matched an absurd clause, results in a neutral .\AgdaWe ran out of clauses, all considered clauses produced an actual mismatch. This can happen when try to reduce a function application but we are still missing some function clauses. See  Agda.TypeChecking.Patterns.Match.]AgdaRReduction was not blocked, we reached a whnf which can be anything but a stuck .^AgdaAn atomic term of type Level._AgdaA meta variable targeting Level under some eliminations.`AgdaA term of type Level& whose reduction is blocked by a meta.aAgdaA neutral term of type Level.bAgdaIntroduced by  instantiate , removed by reduce.dAgdan, to represent Set .eAgdan + !.fAgda(A level is a maximum expression of 0..n cC expressions each of which is a number or an atom plus a number.>The empty maximum is the canonical representation for level 0.hAgdaSorts.iAgdaSet !.jAgdaProp !.kAgdaSet.lAgdaSizeUniv, a sort inhabited by type Size.mAgdaSort of the pi type.nAgdaSort of another sort.pAgdaA postulated sort.qAgda^A (part of a) term or type which is only used for internal purposes. Replaces the abuse of Prop for a dummy sort. The Stringk typically describes the location where we create this dummy, but can contain other information as well.sAgdaVSequence of types. An argument of the first type is bound in later types and so on.uAgda~ is never .zAgda'Types are terms with a sort annotation.~Agda Binder. ~2: The bound variable might appear in the body. P is pseudo-binder, it does not introduce a fresh variable, similar to the const of Haskell.Agda6The body has (at least) one free variable. Danger: ! doesn't shift variables properlyAgdaNames in binders and arguments.Agda5Eliminations, subsuming applications and projections.Agda Application.Agda Projection.   is name of a record projection.Agda'IApply x y r, x and y are the endpointsAgda Raw values.Def is used for both defined and undefined constants. Assume there is a type declaration and a definition for every constant, even if the definition is an empty list of clauses.Agdax es neutralAgda+Terms are beta normal. Relevance is ignoredAgdaf es, possibly a delta/iota-redexAgdac es or record { fs = es } esU allows only Apply and IApply eliminations, and IApply only for data constructors.Agda)dependent or non-dependent function spaceAgdaIrrelevant stuff in relevant position, but created in an irrelevant context. Basically, an internal version of the irrelevance axiom .irrAx : .A -> A.AgdaUA (part of a) term or type which is only used for internal purposes. Replaces the  Sort Prop hack. The Stringk typically describes the location where we create this dummy, but can contain other information as well.AgdaStore the names of the record fields in the constructor. This allows reduction of projection redexes outside of TCM. For instance, during substitution and application.AgdaThe name of the constructor.Agda'Record constructors can be coinductive.AgdaGThe name of the record fields. Empty list for data constructors. n is stored since the info in the constructor args might not be accurate because of subtyping (issue #2170).AgdaType of argument lists.AgdaWhen trying to reduce f es(, on match failed on one elimination e " es that came with info r :: NotBlocked.  stuckOn e r produces the new  NotBlocked info.\i must be propagated, as this is blockage that can be lifted in the future (as more clauses are added).Y e0F is also propagated, since it provides more precise information as  StuckOn e (as e0L is the original reason why reduction got stuck and usually a subterm of e). An information like %StuckOn (Apply (Arg info (Var i [])))u (stuck on a variable) could be used by the lhs/coverage checker to trigger a split on that (pattern) variable.In the remaining cases for r$, we are terminally stuck due to  StuckOn e. Propagating [ does not seem useful.Z4 must not be propagated, as this would mean that f esD is underapplied, which is not the case (it is stuck). Note that Z\ can only arise when projection patterns were missing to complete the original match (in e/). (Missing ordinary pattern would mean the eQ is of function type, but we cannot match against something of function type.)AgdaBuild partial ' from AgdaBuild  from '.Agda Retrieve the origin of a patternAgda1Does the pattern perform a match that could fail?AgdaQAbsurd lambdas are internally represented as identity with variable name "()".AgdaAn unapplied variable.AgdaAdd  is it is not already a DontCare.Agda,Aux: A dummy term to constitute a dummy termlevel sort/type.Agda.Aux: A dummy level to constitute a level/sort.AgdaEA dummy term created at location. Note: use macro (dummyTerm "srcfullAgdaSyntaxInternal.hs" 759) !AgdaFA dummy level created at location. Note: use macro (dummyLevel "srcfullAgdaSyntaxInternal.hs" 764) !AgdaEA dummy sort created at location. Note: use macro (dummySort "srcfullAgdaSyntaxInternal.hs" 769) !AgdaEA dummy type created at location. Note: use macro (dummyType "srcfullAgdaSyntaxInternal.hs" 774) !AgdaXContext entries without a type have this dummy type. Note: use macro (dummyDom "srcfullAgdaSyntaxInternal.hs" 779) !AgdaTop sort (Setomega).Agda)A traversal for the names in a telescope.Agda(Convert a list telescope to a telescope.Agda%Convert a telescope to its list form.AgdaLens to edit a r as a list.AgdaRemoving a topmost  constructor.AgdaDoesn't do any reduction.Agda>Convert top-level postfix projections into prefix projections.AgdaConvert / projection eliminations according to their | into  projection applications.Agda#A view distinguishing the neutrals Var, Def, and MetaV which can be projected.AgdaDrop  constructor. (Safe)AgdaDrop  constructors. (Safe)AgdaSplit at first non-Agda Discards Proj f entries.AgdaDrop  constructors. (Safe)AgdaThis instance cheats on , use with care. s are always assumed to be , since they have no . Same for IApplyAgda2The size of a telescope is its length (as a list).Agda] is the unit. \ is dominant. Y{}1 should be propagated, if tied, we take the left.AgdaBlocking by a meta is dominant. AgdaA L clause is one with no patterns and no rhs. Should not exist in practice.2AgdaThe  PatVarName is a name suggestion.Agda#eliminations ordered left-to-right.(bcd        $ !"#%&'()*+,-./0123746589:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcedfghijklmnopqrstuvwxyz{}|~a     $ !"#%&'()*+,-./0123746589:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcedfghijklmnopqrstuvwxyz{}|~abcd!4}None"#$,.14568=>?@ACEPSX_` ~WvAgdayThings we can substitute for a variable. Needs to be able to represent variables, e.g. for substituting under binders.wAgda+Produce a variable without name suggestion.xAgda(Produce a variable with name suggestion.yAgda=Are we dealing with a variable? If yes, what is its index?~AgdaWe can substitute Terms for variables.vyxwvyxw~None"#$,.14568=>?@ACEHPSVX_` None"#$,.14568=>?@ACEMPSX_` Agda&Gather free variables in a collection.AgdaThe current context.AgdaIgnore free variables in sorts.AgdaAre we flexible or rigid?AgdaWhat is the current relevance?Agda#Method to return a single variable.Agda5Where should we skip sorts in free variable analysis?Agda Do not skip.AgdaSkip when annotation to a type.AgdaSkip unconditionally.AgdaAny representation of a set of variables need to be able to be modified by a variable occurrence. This is to ensure that free variable analysis is compositional. For instance, it should be possible to compute `fv (v [u/x])` from `fv v` and `fv u`.Agda#Laws * Respects monoid operations: ``` withVarOcc o mempty == mempty withVarOcc o (x <> y) == withVarOcc o x <> withVarOcc o y ``` * Respects VarOcc composition ``` withVarOcc (composeVarOcc o1 o2) = withVarOcc o1 . withVarOcc o2 ```AgdaXOccurrence of free variables is classified by several dimensions. Currently, we have  and .AgdaDepending on the surrounding context of a variable, it's occurrence can be classified as flexible or rigid, with finer distinctions.KThe constructors are listed in increasing order (wrt. information content).Agda7In arguments of metas. The set of metas is used by '`/ to generate the right blocking information.Agda*In arguments to variables and definitions.Agda=In top position, or only under inductive record constructors.Agda3Under at least one and only inductive constructors.Agda: composition. For accumulating the context of a variable.W is dominant. Once we are under a meta, we are flexible regardless what else comes.0 is next in strength. Destroys strong rigidity. is still dominant over .0 is the unit. It is the top (identity) context.AgdaJWhen we extract information about occurrence, we care most about about   occurrences.Agda?First argument is the outer occurrence and second is the inner.AgdaThe initial context.AgdaRun function for FreeM.AgdaBase case: a variable.Agda3Subtract, but return Nothing if result is negative.AgdaGoing under a binder.Agda Changing the  context.Agda Changing the .Agda<What happens to the variables occurring under a constructor?AgdaProper monoid instance for VarMapf rather than inheriting the broken one from IntMap. We combine two occurrences of a variable using ...None"#$,.14568=>?@ACEMPSX_` Agda3Under at least one and only inductive constructors.Agda=In top position, or only under inductive record constructors.Agda*In arguments to variables and definitions.AgdaIn arguments of metas.AgdaFree variables of a term, (disjointly) partitioned into strongly and and weakly rigid variables, flexible variables and irrelevant variables.Agda?Variables under only and at least one inductive constructor(s).AgdaVariables at top or only under inductive record constructors s and s. The purpose of recording these separately is that they can still become strongly rigid if put under a constructor whereas weakly rigid ones stay weakly rigid.AgdaGOrdinary rigid variables, e.g., in arguments of variables or functions.AgdaVariables occuring in arguments of metas. These are only potentially free, depending how the meta variable is instantiated. The set contains the id's of the meta variables that this variable is an argument to.Agda.Variables in irrelevant arguments and under a DontCare#, i.e., in irrelevant positions.AgdaCRigid variables: either strongly rigid, unguarded, or weakly rigid.Agda!All but the irrelevant variables.Agda allVars fv includes irrelevant variables.AgdaICompute an occurrence of a single variable in a piece of internal syntax.3AgdaEExtract occurrence of a single variable from computed free variables.3AgdaGMark variables as flexible. Useful when traversing arguments of metas.3AgdaUMark rigid variables as non-strongly. Useful when traversing arguments of variables.3AgdahMark unguarded variables as strongly rigid. Useful when traversing arguments of inductive constructors.3Agda<What happens to the variables occurring under a constructor?3Agda&Mark all free variables as irrelevant.4AgdaPointwise union.4Agda delete x fv deletes variable x from variable set fv.Agda\Doesn't go inside solved metas, but collects the variables from a metavariable application X ts as  flexibleVars.AgdaCompute free variables.4Agda5Check if a variable is free, possibly ignoring sorts.Agda7Is the variable bound by the abstraction actually used?Agda0Is the term entirely closed (no free variables)?AgdaCollect all free variables.AgdaLCollect all free variables together with information about their occurrence.Agda=Collect all relevant free variables, possibly ignoring sorts.AgdaACollect all relevant free variables, excluding the "unused" ones.Agda'Free variable sets form a monoid under 4...None"#$,.14568=>?@ACEPSX_` zAgdaApply a substitution.Agda(abstract args v)  args --> v[args].AgdamApply something to a bunch of arguments. Preserves blocking tags (application can never resolve blocking).Agda Apply to some default arguments.Agda#Apply to a single default argument.AgdaReplace de Bruijn index i by a  in something.AgdaBReplace what is now de Bruijn index 0, but go under n binders. %substUnder n u == subst n (raise n u).$AgdaTo replace index n by term u, do applySubst (singletonS n u). l ,  " u : A --------------------------------- ,  " singletonS || u : , A,  %Agda@Single substitution without disturbing any deBruijn indices. m , A,  " u : A --------------------------------- , A,  " inplace || u : , A,  &Agda$Lift a substitution under k binders.'Agda I  "  : ,  -------------------  " dropS ||  :  (Agda applySubst ( (& ) v == applySubst  (applySubst  v)+Agda   "  :   " reverse vs :  ----------------------------- (treating Nothing as having any type)  " prependS vs  : ,  .Agda " (strengthenS " ||) : ,0Agda/Instantiate an abstraction. Strict in the term.1AgdagInstantiate an abstraction. Lazy in the term, which allow it to be (throwImpossible (Impossible "srcfullAgda TypeCheckingaSubstitute/Class.hs" 236)) in the case where the variable shouldn't be used but we cannot use 2. Used in Apply.2Agda9Instantiate an abstraction that doesn't use its argument.6AgdaunderAbs k a b applies k to a# and the content of abstraction b# and puts the abstraction back. aM is raised if abstraction was proper such that at point of application of k and the content of b. are at the same context. Precondition: a and b& are at the same context at call time.7AgdaunderLambdas n k a b drops n initial s from b, performs operation k on a and the body of b, and puts the  s back. a@ is raised correctly according to the number of abstractions.& !"#$%&'()*+,-./01234567& !"#$%&'()*+,-./01234567*4None"#$,.124568=>?@ACEPSX_`[ ;Agda3 for root of split tree>AgdaTag for labeling branches of a split tree. Each branch is associated to either a constructor or a literal, or is a catchall branch (currently only used for splitting on a literal type).BAgdaSplit tree branching. A finite map from constructor names to splittrees A list representation seems appropriate, since we are expecting not so many constructors per data type, and there is no need for random access.CAgdaAbstract case tree shape.DAgda@No more splits coming. We are at a single, all-variable clause.EAgdaA split is necessary.FAgda+The number of variables bound in the clauseGAgdaArg. no to split at.HAgdaSub split trees.KAgdaConvert a split tree into a Aa (for printing).9:=<;>A@?BCEDHGFIJKLJICEDHGFB>A@?9:=<;KLNone"#$,.14568=>?@ACEHPSVX_`aXAgdaGeneric term traversal.ONote: ignores sorts in terms! (Does not traverse into or collect from them.)YAgda?Generic traversal with post-traversal action. Ignores sorts.ZAgdaGeneric fold, ignoring sorts.[Agda5Put it in a monad to make it possible to do strictly.XZY[XZY[None"#$,.124568=>?@ACEPSX_`tAgdaCase tree with bodies.uAgda Case n bs stands for a match on the n(-th argument (counting from zero) with bs as the case branches. If the n+-th argument is a projection, we have only { with arity 0.vAgda Done xs b stands for the body b where the xs contains hiding and name suggestions for the free variables. This is needed to build lambdas on the right hand side for partial applications which can still reduce.wAgda Absurd case.xAgdaBranches in a case tree.zAgda3We are constructing a record here (copatterns). { lists projections.{AgdaoMap from constructor (or projection) names to their arity and the case subtree. (Projections have arity 0.)|Agda~Eta-expand with the given (eta record) constructor. If this is present, there should not be any conBranches or litBranches.}Agda!Map from literal to case subtree.~Agda'(Possibly additional) catch-all clause.Agda?(if True) In case of non-canonical argument use catchAllBranch.AgdadLazy pattern match. Requires single (non-copattern) branch with no lit branches and no catch-all.AgdaqCheck that the requirements on lazy matching (single inductive case) are met, and set lazy to False otherwise.Agda1Check whether a case tree has a catch-all clause.Agda5Check whether a case tree has any projection patternsstuvwxy~}|{zxy~}|{ztuvwsNone"#$,.14568=>?@ACEHPSVX_`'AgdaGetting the used definitions.Note: in contrast to b getDefsF also collects from sorts in terms. Thus, this is not an instance of foldTerm.Agda*What it takes to get the used definitions.AgdaInputs to and outputs of getDefs' are organized as a monad.AgdagetDefs' lookup emb aF extracts all used definitions (functions, data/record types) from a, embedded into a monoid via emb7. Instantiations of meta variables are obtained via lookup."Typical monoid instances would be [QName] or  Set QName. Note that embV can also choose to discard a used definition by mapping to the unit of the monoid.  None"#$,.124568=>?@ACEMPSX_`ysAgda,Parameterised over the type of dot patterns.AgdaDestructor pattern d.Agda%Defined pattern: function definition f psw. It is also abused to convert destructor patterns into concrete syntax thus, we put AmbiguousQName here as well.Agda\Underscore pattern entered by user. Or generated at type checking for implicit arguments.Agda Dot pattern .eAgda| p, for with-patterns.AgdaXThe lhs in projection-application and with-pattern view. Parameterised over the type e of dot patterns.Agda&The head applied to ordinary patterns.Agda Projection.AgdaWith patterns.AgdaHead f.AgdaApplied to patterns ps.AgdaRecord projection identifier.AgdaMain argument of projection.Agda E.g. the .AgdaApplied to with patterns | p1 | ... | pn*. These patterns are not prefixed with WithP!AgdatThe lhs of a clause in focused (projection-application) view (outside-in). Projection patters are represented as s.AgdaRange.Agda Copatterns.AgdaXThe lhs of a clause in spine view (inside-out). Projection patterns are contained in  spLhsPats, represented as ProjP d.AgdaRange.Agda!Name of function we are defining.Agda3Elimination by pattern, projections, with-patterns.AgdaThe  " is the name of the with function.AgdasWe store the original concrete expression in case we have to reproduce it during interactive case splitting. 3 for internally generated rhss.AgdaThe  As are the names of the generated with functions, one for each T.AgdacThe patterns stripped by with-desugaring. These are only present if this rewrite follows a with.AgdaThe RHS should not be another  RewriteRHS.Agda&The where clauses are attached to the  RewriteRHS byAgdaWe could throw away where0 clauses at this point and translate them to let,. It's not obvious how to remember that the let was really a where6 clause though, so for the time being we keep it here.AgdaOnly in with-clauses where we inherit some already checked patterns from the parent. These live in the context of the parent clause left-hand side.AgdaA user pattern together with an internal term that it should be equal to after splitting is complete. Special cases: * User pattern is a variable but internal term isn't: this will be turned into an as pattern. * User pattern is a dot pattern: this pattern won't trigger any splitting but will be checked for equality after all splitting is complete and as patterns have been bound. * User pattern is an absurd pattern: emptiness of the type will be checked after splitting is complete. AgdauWe don't yet know the position of generalized parameters from the data sig, so we keep these in a set on the side.AgdajMaps generalize variables to the corresponding bound variable (to be introduced by the generalisation).AgdaA typed binding. Appears in dependent function spaces, typed lambdas, and telescopes. It might be tempting to simplify this to only bind a single name at a time, and translate, say,  (x y : A) to (x : A)(y : A)G before type-checking. However, this would be slightly problematic: $We would have to typecheck the type A several times.If AX contains a meta variable or hole, it would be duplicated by such a translation.SWhile 1. is only slightly inefficient, 2. would be an outright bug. Duplicating A~ could not be done naively, we would have to make sure that the metas of the copy are aliases of the metas of the original.AgdaAs in telescope  (x y z : A) or type (x y z : A) -> B.AgdaE.g.  (let x = e) or  (let open M).Agda0A lambda binding is either domain free or typed.Agda. x or {x} or .x or {x = y}Agda. (xs:e) or {xs:e} or (let Ds)AgdaOnly Ms.AgdaBindings that are valid in a let.Agda LetBind info rel name type defnAgdaIrrefutable pattern binding.Agda*LetApply mi newM (oldM args) renamings dir. The ImportDirective is for highlighting purposes.Agda,only for highlighting and abstractToConcrete Agda?Only used for highlighting. Refers to the first occurrence of x in let x : A; x = e(. | LetGeneralize DefInfo ArgInfo Expr#Agda is not :. Name can be ambiguous e.g. for built-in constructors.$AgdaWBuiltins that do not come with a definition, but declare a name for an Agda concept.(Agda:For coinductive records, use pragma instead of regular  eta-equality, definition (as it is might make Agda loop).-Agda tel. M args : applies M to args and abstracts tel..Agda  M {{...}}5Agda3Type signature (can be irrelevant, but not hidden).PThe fourth argument contains an optional assignment of polarities to arguments.6AgdaBFirst argument is set of generalizable variables used in the type.7Agda record field8Agdaprimitive function9Agda)a bunch of mutually recursive definitions;AgdaThe ImportDirective is for highlighting purposes.<AgdaThe ImportDirective is for highlighting purposes.>Agda'only retained for highlighting purposes?Agdasequence of function clauses@Agdalone data signatureAAgdathe s are ) and bind the parameters of the datatype.BAgdalone record signatureCAgdaThe s are 1 and bind the parameters of the datatype. The T' gives the constructor type telescope, (x1 : A1)..(xn : An) -> Prop5, and the optional name is the constructor's name.DAgdaOnly for highlighting purposesGAgdascope annotationLAgdaRenaming (generic).MAgdaIs a type signature a  postulate or a function signature?NAgdaA function signature.OAgdayNot a function signature, i.e., a postulate (in user input) or another (e.g. data/record) type signature (internally).SAgdaRecord field assignment f = e.TAgdaDExpressions after scope checking (operators parsed, names resolved).UAgdaBound variable.VAgda/Constant: axiom, function, data or record type.WAgdaProjection (overloaded).XAgdaConstructor (overloaded).YAgdaPattern synonym.ZAgdaMacro.[AgdaLiteral.\Agda&Meta variable for interaction. The V" is usually identical with the  of B. However, if you want to print an interaction meta as just ? instead of ?n, you should set the  to 3 while keeping the V.]Agda=Meta variable for hidden argument (must be inferred locally).^Agda.e, for postfix projection._AgdaOrdinary (binary) application.`AgdaWith application.aAgda bs ! e.bAgda() or {}.dAgdaDependent function space  ! A.eAgda(Like a Pi, but the ordering is not knownfAgdaNon-dependent function space.gAgdaSet, Set1, Set2, ...hAgdaProp, Prop1, Prop2, ...iAgda let bs in e.jAgda#Only used when printing telescopes.kAgdaRecord construction.lAgdaRecord update.mAgdaScope annotation.nAgdaBinds Name to current type in Expr.oAgdaReturns the current context.pAgdaQuote an identifier  .qAgda Quote a term.rAgda#The splicing construct: unquote ...sAgda  tactic e x1 .. xn | y1 | .. | yntAgda For printing DontCare from Syntax.Internal.vAgdahA name in a binding position: we also compare the nameConcrete when comparing the binders for equality.With  --caching on we compare abstract syntax to determine if we can reuse previous typechecking results: during that comparison two names can have the same nameId but be semantically different, e.g. in  {_ : A} -> .. vs.  {r : A} -> ...yAgda!Smart constructor for GeneralizedAgdaDoes not compare  fields.AgdaDoes not compare H fields. Does not distinguish between prefix and postfix projections.AgdaIgnore y when comparing s.AgdaIgnore  when comparing s.AgdaAre we in an abstract block?)In that case some definition is abstract.Agda/Extracts all the names which are declared in a 4. This does not include open public or let expressions, but it does include local modules, where clauses and the names of extended lambdas.Agda$The name defined by the given axiom.3Precondition: The declaration has to be a (scoped) M.AgdaAssumes name is not .AgdaTurn an  to an expression.         !"#%&'*()+$,-./012348=;>697?A5@<EF:BCDGHIJKLMNOPQRSTUgfhX_[k^Vpri]da\`bcljnoqsteYZWmuvwxyz{|       !"#%&'*()+$,-./012348=;>697?A5@<EF:BCDGHIJKLMNOPQRSTUgfhX_[k^Vpri]da\`bcljnoqsteYZWmuvwxyz{|   None"#$,.14568=>?@ACEHPSVX_`*Agda<Get the list of pattern variables annotated with modalities.-AgdaGeneric pattern traversal.KPre-applies a pattern modification, recurses, and post-applies another one..Agda Fold pattern./AgdaTraverse pattern.2AgdayLabel the pattern variables from left to right using one label for each variable pattern and one for each dot pattern.4AgdaJIntended, but unpractical due to the absence of type-level lambda, is: @labelPatVars :: f (Pattern' x) -> State [i] (f (Pattern' (i,x)))5Agda+Arity of a function, computed from clauses.7Agda\Translate the clause patterns to terms with free variables bound by the clause telescope.%Precondition: no projection patterns.8AgdakTranslate the clause patterns to an elimination spine with free variables bound by the clause telescope.9Agda5Augment pattern variables with their de Bruijn index.<AgdaOComputes the permutation from the clause telescope to the pattern variables.Use as +fromMaybe (throwImpossible (Impossible "srcfullAgdaSyntax&Internal/Pattern.hs" 131)) . dbPatPermK to crash in a controlled way if a de Bruijn index is out of scope here.OThe first argument controls whether dot patterns counts as variables or not.=AgdaOComputes the permutation from the clause telescope to the pattern variables.Use as +fromMaybe (throwImpossible (Impossible "srcfullAgdaSyntax'Internal/Pattern.hs" 155)) . clausePermK to crash in a controlled way if a de Bruijn index is out of scope here.>AgdaTurn a pattern into a term. Projection patterns are turned into projection eliminations, other patterns into apply elimination.AAgdaFCompute from each subpattern a value and collect them all in a monoid.BAgdaETraverse pattern(s) with a modification before the recursive descent.CAgdaDTraverse pattern(s) with a modification after the recursive descent.DAgda!Get the number of common initial  patterns in a list of clauses.EAgdaGet the number of initial  patterns in a clause.FAgdaGet the number of initial  patterns.LAgdaModify the content of VarP, and the closest surrounding NamedArg. Note: the  mapNamedArg for Pattern'! is not expressible simply by fmap or traverse etc., since ConP has NamedArg1 subpatterns, which are taken into account by  mapNamedArg..Agda>Combine a pattern and the value computed from its subpatterns./Agdapre : Modification before recursion.Agdapost: Modification after recursion.BAgdapre : Modification before recursion.CAgdapost: Modification after recursion.)*+,-/.0124356789:;<=>?@ABC78562439:;<=>?@01-/.ABC+,)*None"#$&',.14568=>?@ACEPSX_`ZAgdaIApply an expression rewriting to every subexpression, inside-out. See Agda.Syntax.Internal.Generic.[AgdaEThe first expression is pre-traversal, the second one post-traversal._AgdaCollects plain lambdas.dAgda-Gather applications to expose head and spine.ENote: everything is an application, possibly of itself to 0 argumentsiAgdaGather top-level %atterns to expose underlying pattern.jAgda-Check whether we are dealing with a universe.kAgda Remove top m wrappers.lAgdaRemove m wrappers everywhere.!NB: Unless the implementation of ZF for clauses has been finished, this does not work for clauses yet.Z[\]^_`abcdefghijklmnbcadefg_`hijklmnZ[\]^None"#$,.14568=>?@ACEPSX_`AgdaMerge a list of pattern synonym definitions. Fails unless all definitions have the same shape (i.e. equal up to renaming of variables and constructor names).Agda.Match an expression against a pattern synonym.Agda*Match a pattern against a pattern synonym.None"#$,.14568=>?@ACEHPSVX_` sAgda-Convert a focused lhs to spine view and back.AgdaThe next patterns are ...(This view discards .)Agda&Application patterns (non-empty list).Agda6A projection pattern. Is also stored unmodified here.AgdaHWith patterns (non-empty list). These patterns are not prefixed with .AgdaGeneric pattern traversal.Agda Fold pattern.AgdaTraverse pattern.AgdaFCompute from each subpattern a value and collect them all in a monoid.AgdaETraverse pattern(s) with a modification before the recursive descent.AgdaDTraverse pattern(s) with a modification after the recursive descent.Agda?Map pattern(s) with a modification after the recursive descent.Agda9Collect pattern variables in left-to-right textual order.Agda4Check if a pattern contains a specific (sub)pattern.Agda@Check if a pattern contains an absurd pattern. For instance, suc () , does so.+Precondition: contains no pattern synonyms.Agda)Check if a pattern contains an @-pattern.+Precondition: contains no pattern synonyms.AgdajCheck if any user-written pattern variables occur more than once, and throw the given error if they do.AgdaPattern substitution.gFor the embedded expression, the given pattern substitution is turned into an expression substitution.AgdaUPattern substitution, parametrized by substitution function for embedded expressions.Agda7Split patterns into (patterns, trailing with-patterns).Agda1Get the tail of with-patterns of a pattern spine.AgdaConstruct the " of the given list (if not empty).+Return the view and the remaining patterns.AgdaKAdd applicative patterns (non-projection / non-with patterns) to the right.AgdaAdd with-patterns to the right.Agda<Add projection, with, and applicative patterns to the right.Agda$Used for checking pattern linearity.Agda Used in 'cd. Returns a .AgdaCheck for with-pattern.Agda LHS instance.AgdaList instance (for clauses).AgdaClause instance.Agda>Combine a pattern and the value computed from its subpatterns.Agdapre : Modification before recursion.Agdapost: Modification after recursion.Agdapre : Modification before recursion.Agdapost: Modification after recursion.Agda&Substitution function for expressions.Agda(Parallel) substitution.AgdaInput pattern.$$None!"#$&',-.14568=>?@ACEHPSUVX_`Agda Currying as b# witnesses the isomorphism between  Arrows as b and Products as -> bO. It is defined as a type class rather than by recursion on a singleton for asX so all of that these conversions are inlined at compile time for concrete arguments.AgdaUsing IsBase we can define notions of Domains and  CoDomains. which *reduce* under positive information IsBase t ~ 'True even though the shape of t is not formally exposedAgdaIsBase t is 'True whenever t is *not* a function space.AgdaArrows [a1,..,an] r corresponds to a1 -> .. -> an -> r | Products [a1,..,an] corresponds to (a1, (..,( an, ())..))Agda Version of FoldrV taking a defunctionalised argument so that we can use partially applied functions.AgdaOn ListsAgda On BooleansAgdaAll p as ensures that the constraint p is satisfied by all the types in asZ. (Types is between scare-quotes here because the code is actually kind polymorphic)Safe"#$&',.14568=>?@ACEHPSX_`"Agda]A known boolean is one we can obtain a singleton for. Concrete values are trivially known.Agda"Singleton for type level booleans.None"#$,.14568=>?@ACEMPSX_`,i AgdaLike  Bifunctor, but preserving sharing.AgdaLike 3, but preserving sharing.AgdaThe Change monad.4AgdaThe ChangeT monad transformer.AgdaThe class of change monads.AgdaRun a 0 computation, returning result plus change flag.AgdaBlindly run an updater.AgdaMark a computation as dirty.AgdaFReplace result of updating with original input if nothing has changed.4AgdaEval an updater (using ).AgdaA mock change monad.Agda = sharing . updater1Agda-Mark computation as having changed something.None"#$&',.124568=>?@ACEMPSX_`TE4AgdaMake a declaration private.*Andreas, 2012-11-17: Mark computation as v if there was a declaration that could be privatized. If no privatization is taking place, we want to complain about ."Alternatively, we could only flag 6 if a non-private thing was privatized. Then, nested private+s would sometimes also be complained about.4AgdaMake a declaration abstract.Mark computation as w if there was a declaration that could be made abstract. If no abstraction is taking place, we want to complain about ."Alternatively, we could only flag 7 if a non-abstract thing was abstracted. Then, nested abstract+s would sometimes also be complained about.4AgdaNicifier state.4Agda4Lone type signatures that wait for their definition.4 Agda5Termination checking pragma waiting for a definition.4 Agda4Positivity checking pragma waiting for a definition.4 AgdaHUniverse checking pragma waiting for a data/rec signature or definition.4 Agda.Catchall pragma waiting for a function clause.4 Agda(Stack of warnings. Head is last warning.AgdaANicifier monad. Preserve the state when throwing an exception.4Agda$The kind of the forward declaration.4AgdaName of a data type4AgdaName of a record type4AgdaName of a function.4Agdawe are nicifying a mutual block4Agda,we are nicifying decls not in a mutual block4AgdaQSeveral declarations expect only type signatures as sub-declarations. These are:4Agda  postulate4Agda primitive. Ensured by parser.4AgdainstanceE. Actually, here all kinds of sub-declarations are allowed a priori.4Agdafield. Ensured by parser.4Agdadata ... where=. Here we got a bad error message for Agda-2.5 (Issue 1698).Agda,Non-fatal errors encountered in the NicifierAgdaEmpty abstract block.AgdaEmpty instance blockAgdaEmpty macro block.AgdaEmpty mutual block.AgdaEmpty  postulate block. AgdaEmpty private block. AgdaEmpty variable block. AgdaEmpty  primitive block. AgdaEA {-# CATCHALL #-} pragma that does not precede a function clause. AgdaWA {-# NO_POSITIVITY_CHECK #-} pragma that does not apply to any data or record type.AgdaSA {-# NO_UNIVERSE_CHECK #-} pragma that does not apply to a data or record type.Agda`A {-# TERMINATING #-} and {-# NON_TERMINATING #-} pragma that does not apply to any function.AgdaPragma {-# NO_TERMINATION_CHECK #-} has been replaced by {-# TERMINATING #-} and {-# NON_TERMINATING #-}.AgdaCOMPILE% pragmas are not allowed in safe modeAgdaThe exception type.$Agda7in a mutual block, a clause could belong to any of the [Name] type signatures%AgdaRIn a mutual block, all or none need a MEASURE pragma. Range is of mutual block.(AgdaDOne clause in a function definition. There is no guarantee that the  actually declares the  %#. We will have to check that later.*AgdaOnly .s.+AgdaOnly .s.,Agda1Termination measure is, for now, a variable name.-AgdaThe nice declarations. No fixity declarations and function definitions are contained in a single constructor instead of spread out between type signatures and clauses. The private,  postulate, abstract and instanceD modifiers have been distributed to the individual declarations. Observe the order of components:oRange Fixity' Access IsAbstract IsInstance TerminationCheck PositivityCheckfurther attributes(Q)Namecontent (Expr, Declaration ...).Agdao: argument: We record whether a declaration was made in an abstract block.@ argument: Axioms and functions can be declared irrelevant. ( should be .)9AgdaAn uncategorized function clause, could be a function clause without type signature or a pattern lhs (e.g. for irrefutable let). The  is the actual .;AgdaKBlock of function clauses (we have seen the type signature before). The As are the original declarations that were processed into this ; and are only used in notSoNiceDeclaration9. Andreas, 2017-01-01: Because of issue #2372, we add l6 here. An alias should know that it is an instance.4AgdaCheck that declarations in a mutual block are consistently equipped with MEASURE pragmas, or whether there is a NO_TERMINATION_CHECK pragma.CAgdaSRun a Nicifier computation, return result and warnings (in chronological order).4AgdaInitial nicifier state.4AgdaLens for field 4.4Agda%Adding a lone signature to the state.4Agda'Remove a lone signature from the state.4Agda"Search for forward type signature.4 Agda4Check that no lone signatures are left in the state.4!AgdaBEnsure that all forward declarations have been given a definition.4"AgdaLens for field 4 .4#AgdaLens for field 4 .4$AgdaLens for field 4 .4%AgdaDGet universe check pragma from a data/rec signature. Defaults to ;.4&AgdaLens for field 4 .4'Agda>Get current catchall pragma, and reset it for the next clause.4(AgdaAdd a new warning.4)Agda Replace (DataRecYFun)Sigs with Axioms for postulated names The first argument is a list of axioms only.DAgdadMain. Fixities (or more precisely syntax declarations) are needed when grouping function clauses.EAgda(Approximately) convert a - back to a list of s.FAgdaHas the - a field of type o?OAgdaContents of a where& clause are abstract if the parent is.4*Agda(Stack of warnings. Head is last warning.4)Agda(Lone signatures to be turned into AxiomsAgdaDeclarations containing themAgda+In the output, everything should be definedE      !"#$%&'()*+,-;.:/0123456789<=>?@ABCDEFE-;.:/0123456789<=>?@A+*() !"#$%&'     CDEF,BNone"#$,.124568=>?@ACEMPSX_`# oAgdaWrapped Parser type.pAgda"A monad for handling parse resultsuAgda'Returns the contents of the given file.wAgdaExtensions supported by x.yAgdaParses a module.zAgdaParses a module name.{AgdaParses an expression.|Agda0Parses an expression followed by a where clause.}AgdaBParses an expression or some other content of an interaction hole.~Agda3Gives the parsed token stream (including comments).4+Agda9Keep comments in the token stream generated by the lexer.4,Agda@Do not keep comments in the token stream generated by the lexer.4-AgdaThe path to the file.Agda)The file contents. Note that the file is not read from disk.xAgdaThe path to the file.Agda)The file contents. Note that the file is not read from disk.! opqrstuvwxyz{|}~!otvxyzw{|}~u pqrsSafe"#$,.14568=>?@ACEPSX_`!None"#$,.14568=>?@ACEPSX_`P#4.Agda Return type of fold over syntax.4/AgdaIgnore free variables in sorts.40Agda'Under how many binders have we stepped?Agda5Where should we skip sorts in free variable analysis?Agda Do not skip.AgdaSkip when annotation to a type.AgdaSkip unconditionally.Agda3Under at least one and only inductive constructors.Agda=In top position, or only under inductive record constructors.Agda*In arguments to variables and definitions.AgdaIn arguments of metas.AgdaFree variables of a term, (disjointly) partitioned into strongly and and weakly rigid variables, flexible variables and irrelevant variables.Agda?Variables under only and at least one inductive constructor(s).AgdaVariables at top or only under inductive record constructors s and s. The purpose of recording these separately is that they can still become strongly rigid if put under a constructor whereas weakly rigid ones stay weakly rigid.Agda:Ordinary rigid variables, e.g., in arguments of variables.Agda~Variables occuring in arguments of metas. These are only potentially free, depending how the meta variable is instantiated.Agda.Variables in irrelevant arguments and under a DontCare#, i.e., in irrelevant positions.AgdaCRigid variables: either strongly rigid, unguarded, or weakly rigid.Agda!All but the irrelevant variables.Agda allVars fv includes irrelevant variables.41AgdaGMark variables as flexible. Useful when traversing arguments of metas.42AgdaUMark rigid variables as non-strongly. Useful when traversion arguments of variables.43AgdahMark unguarded variables as strongly rigid. Useful when traversion arguments of inductive constructors.44Agda<What happens to the variables occurring under a constructor?45Agda&Mark all free variables as irrelevant.46AgdaPointwise union.47Agda delete x fv deletes variable x from variable set fv.48AgdasubtractFV n fv* subtracts $n$ from each free variable in fv.49AgdaA single unguarded variable.Agda\Doesn't go inside solved metas, but collects the variables from a metavariable application X ts as  flexibleVars.4:AgdaBase case: a variable.4;AgdaGoing under a binder.4<AgdaGoing under n binders.Agda7Is the variable bound by the abstraction actually used?Agda'Free variable sets form a monoid under 46.None"#$,.14568=>?@ACEMPSX_`bAgda e.g. x + 5Agdaa number or infinityAgdabA solution assigns to each flexible variable a size expression which is either a constant or a v + n for a rigid variable v.Agda"A matrix with row descriptions in b and column descriptions in c.Agda6The Graph Monad, for constructing a graph iteratively.AgdaScope for each flexible var.AgdaNode labels to node numbers.AgdaNode numbers to node labels.AgdaNumber of nodes n.AgdaThe edges (restrict to [0..n[).Agda%A constraint is an edge in the graph.AgdaFor  Arc v1 k v2 at least one of v1 or v2 is a MetaV+ (Flex), the other a MetaV or a Var (Rigid). If k <= 0 this means suc^(-k) v1 <= v2 otherwise v1 <= suc^k v3.Agda3Which rigid variables a flex may be instatiated to.AgdaQNodes of the graph are either - flexible variables (with identifiers drawn from Int*), - rigid variables (also identified by Int<s), or - constants (like 0, infinity, or anything between).Agda.Edge weight in the graph, forming a semi ring.AgdaAWarshall's algorithm on a graph represented as an adjacency list.AgdaisBelow r w r' checks, if r and r' are connected by w (meaning w not infinite), whether  r + w <= r'/. Precondition: not the same rigid variable.AgdaEThe empty graph: no nodes, edges are all undefined (infinity weight).AgdaAdd a size meta node.AgdaBLookup identifier of a node. If not present, it is added first.AgdaaddEdge n1 k n2 improves the weight of egde n1->n2 to be at most k(. Also adds nodes if not yet present.Agda sizeRigid r n. returns the size expression corresponding to r + n55Safe"#$,.14568=>?@ACEHPSX_`Safe"#$,.14568=>?@ACEHPSVX_`F           eSafe"#$,.14568=>?@ACEPSX_`ڔ4=4>4?4@4A4B4C4DSafe"#$,.14568=>?@ACEPSX_`AgdaThe version of Agda.None"#$,.14568=>?@ACEPSX_`9Agda?Information about current git commit, generated at compile timeNone"#$,.124568=>?@ACEPSX_`$ AgdaThrows O exceptions, still collects s.4EAgda Collects 4Fs and s.4GAgda0Collected errors while processing library files.4HAgdaFRaised when a library name could no successfully be resolved to an  .agda-lib file.4IAgda1Raised when a library name is defined in several .agda-lib files.4JAgdaGeneric error.!AgdaName of  libraries file"AgdaLine number in  libraries file.#Agda Library file$AgdaYLibrary names are structured into the base name and a suffix of version numbers, e.g.  mylib-1.2.3". The version suffix is optional.&AgdaActual library name.'AgdaMajor version, minor version, subminor version, etc., all non-negative. Note: a priori, there is no reason why the version numbers should be Ints.4KAgdaE.g. ~.agda libraries.4LAgda_The libraries file might not exist, but we may print its assumed location in error messages.4MAgdaRaise collected  LibErrors as exception.4NAgdaGet the path to ~/.agda1 (system-specific). Can be overwritten by the AGDA_DIR environment variable.s(This is not to be confused with the directory for the data files that Agda needs (e.g. the primitive modules).)4OAgdaThe ~.agda librariesD file lists the libraries Agda should know about. The content of  libraries is is a list of pathes to  .agda-lib files."Agda honors also version specific  libraries files, e.g. libraries-2.6.0.defaultLibraryFiles gives a list of all  libraries) files Agda should process by default.4PAgdaThe  defaultsFileA contains a list of library names relevant for each Agda project.4QAgdaGet pathes of  .agda-lib files in given project root.EIf there are none, look in the parent directories until one is found.)Agda:Get dependencies and include paths for given project root: Look for  .agda-lib files according to 4Q?. If none are found, use default dependencies (according to defaults/ file) and current directory (project root).4RAgda/Return list of libraries to be used by default. None if the defaults file does not exist.4SAgdaReturns the path of the  libraries1 file which lists the libraries Agda knows about.Note: file may not exist.*Agda9Parse the descriptions of the libraries Agda knows about.Returns none if there is no  libraries file.4TAgdaParse the given library files.4UAgda.Remove trailing white space and line comments.+Agda6Get all include pathes for a list of libraries to use.4VAgdafindLib x libs retrieves the matches for x from list libs. Case x is unversioned: If x is contained in libsi, then that match is returned. Otherwise, the matches with the highest version number are returned.Case xH is versioned: the matches with the highest version number are returned.Examples, see ,.,AgdaGeneralized version of 4V for testing. DfindLib' id "a" [ "a-1", "a-02", "a-2", "b" ] == [ "a-02", "a-2" ] findLib' id "a" [ "a", "a-1", "a-01", "a-2", "b" ] == [ "a" ] findLib' id "a-1" [ "a", "a-1", "a-01", "a-2", "b" ] == [ "a-1", "a-01" ] findLib' id "a-2" [ "a", "a-1", "a-01", "a-2", "b" ] == [ "a-2" ] findLib' id "c" [ "a", "a-1", "a-01", "a-2", "b" ] == []4WAgdax 4W y if x and y have the same vvBase and either x5 has no version qualifier or the versions also match.-AgdaASplit a library name into basename and a list of version numbers. sversionView "foo-1.2.3" == VersionView "foo" [1, 2, 3] versionView "foo-01.002.3" == VersionView "foo" [1, 2, 3]$Note that because of leading zeros,  versionView is not injective. (unVersionView . versionView would produce a normal form.).AgdaPrint a  VersionView , inverse of  versionView (modulo leading zeros).4XAgda Pretty-print 4F.4QAgda Project root.Agda Pathes of  .agda-lib! files for this project (if any).)Agda Project root.AgdaUse defaults if no  .agda-lib file exists for this project?Agda The returned LibNames are all non-empty strings.4SAgdaOverride the default  libraries file?*AgdaOverride the default  libraries file?Agda-Content of library files. (Might have empty LibNames.)4TAgdaName of  libraries file for error reporting.Agda/Library files paired with their line number in  libraries.Agda-Content of library files. (Might have empty LibNames.)+Agda libraries file (error reporting only).AgdaLibraries Agda knows about.Agda>(Non-empty) library names to be resolved to (lists of) pathes.Agda2Resolved pathes (no duplicates). Contains "." if  [LibName] does.l !"#$%&'()*+,-.)*+l !"#($%&'-.,Safe"#$,.14568=>?@ACEPSX_`0x4YAgda=Action to be carried out for copying a directory recursively.4ZAgdaCreate directory if missing.4[AgdaCopy file if changed.9AgdacopyDirContent src dest recursively copies directory src onto dest.WFirst, a to-do list of copy actions is created. Then, the to-do list is carried out.MThis avoids copying files we have just created again, which can happen if src and dest( are not disjoint. (See issue #2705.)4\AgdaPerform scheduled 4Y.4]AgdacopyDirContentDryRun src dest; creates a to-do list for recursively copying directory src onto dest.4^AgdacopyIfChanged src dst makes sure that dst' exists and has the same content as dst.99None"#$,.14568=>?@ACEPSX_`c%:Agdaf :: Flag optsO is an action on the option record that results from parsing an option. f optsC produces either an error message or an updated options record<AgdaThe options from an OPTIONS pragma.In the future it might be nice to switch to a more structured representation. Note that, currently, there is not a one-to-one correspondence between list elements and options.=Agda%Options which can be set in a pragma.GAgdaICut off structural order comparison at some depth in termination checker?PAgda+irrelevant levels, irrelevant data matchingRAgda(Allow definitions by copattern matching?SAgda0Is pattern matching allowed in the current file?VAgda$Can rewrite rules be added and used?XAgda$Should system generated projections  ProjSystem0 be printed postfix (True) or prefix (False).^Agda:Should conversion checker use syntactic equality shortcut?bAgdaPCount extended grapheme clusters rather than code points when generating LaTeX.cAgdaSAutomatic compile-time inlining for simple definitions (unless marked NOINLINE).eAgda+Use the Agda abstract machine (fastReduce)?mAgda-Use this (if Just) instead of .agda/librariesnAgdaUse ~.agdadefaultsoAgdalook for .agda-lib filesvAgda2In the absence of a path the project root is used.AgdaKShould the top-level module only be scope-checked, and not type-checked?AgdaMap a function over the long options. Also removes the short options. Will be used to add the plugin name to the plugin options.AgdaThe default termination depth.4_Agda'The default output directory for LaTeX.4`Agda&The default output directory for HTML.Agda-Checks that the given options are consistent.Agda<Check for unsafe pragmas. Gives a list of used unsafe flags.AgdaIf any these options have changed, then the file will be rechecked. Boolean options are negated to mention non-default options, where possible.AgdawAn infective option is an option that if used in one module, must be used in all modules that depend on this module.AgdayA coinfective option is an option that if used in one module, must be used in all modules that this module depends on.4aAgda#Defined locally here since module 'f has cyclic dependency.AgdaCommand line options of previous versions of Agda. Should not be listed in the usage info, put parsed by GetOpt for good error messaging.4bAgdaPragma options of previous versions of Agda. Should not be listed in the usage info, put parsed by GetOpt for good error messaging.AgdaCUsed for printing usage info. Does not include the dead options.AgdagSimple interface for System.Console.GetOpt Could be moved to Agda.Utils.Options (does not exist yet)Agda%Parse options from an options pragma.AgdaParse options for a plugin.AgdaLThe usage info message. The argument is the program name (probably agda).Agda+Removes RTS options from a list of options.Agda_Returns the absolute default lib dir. This directory is used to store the Primitive.agda file.Agdacommand line argument wordsAgdaoptions handlersAgda,handler of non-options (only one is allowed)Agda(combined opts data structure transformerAgdaPragma options.Agda-Command-line options which should be updated.p :;<=>XZKM^?@ABCDEFGHIJLNOPQRSTUVWY[\]_`abcdefgvnhijklmopqrstuwxyz{|}~pfgvnhijklmopqrstuwxyz{|}~=>XZKM^?@ABCDEFGHIJLNOPQRSTUVWY[\]_`abcde<:; VNone"#$,.124568=>?@ACEMPSX_`^. wAgdaDMaps top-level module names to the corresponding source file names. yAgda4The type checking monad transformer. Adds readonly  } and mutable  |. ~Agda6How should highlighting be sent to the user interface?AgdaInteraction monad.Agda MonadTCStateE made into its own dedicated service class. This allows us to use 4c for 4d extensions of TCM.Agda MonadTCEnvE made into its own dedicated service class. This allows us to use 3b for 4e extensions of TCM.Agda Environment of the reduce monad.Agda Read only access to environment.Agda0Read only access to state (signature, metas...).Agda9Returns the pragma options which are currently in effect.Agda?Returns the command line options which are currently in effect.AgdaType-checking errors.Agda?The first argument is the state in which the error was raised.Agda\The exception which is usually caught. Raised for pattern violations during unification (assignV=) but also in other situations where we want to backtrack.Agda(The state in which the error was raised.Agda<The environment in which the error as raised plus the error.AgdaDDistinguish error message when parsing lhs or pattern synonym, resp.AgdaGThe target of a constructor isn't an application of its datatype. The y records what it does target.AgdaThe target of a constructor isn't its datatype applied to something that isn't the parameters. First term is the correct target and the second term is the actual target.Agda>Expected a type to be an application of a particular datatype.Agdaconstructor, datatypeAgdaDatatype, constructors.Agdaconstructor, typeAgdaeThe left hand side of a function definition has a hidden argument where a non-hidden was expected.Agda9Expected a non-hidden function and found a hidden lambda.AgdaKA function is applied to a hidden argument where a non-hidden was expected.AgdaBA function is applied to a hidden named argument it does not have.Agda0Wrong user-given relevance annotation in lambda.Agda/Wrong user-given quantity annotation in lambda.Agda<The given hiding does not correspond to the expected hiding.AgdaAThe given relevance does not correspond to the expected relevane.Agda'The given type should have been a sort.Agda%The given type should have been a pi.Agda#This sort is not a type expression.Agda#This term is not a type expression.Agda4This term, a function type constructor, lives in SizeUniv, which is not allowed.Agda0The two function types have different relevance.Agda-The two function types have different hiding.AgdawThe arguments are the meta variable, the parameters it can depend on and the paratemeter that it wants to depend on.AgdaOSome interaction points (holes) have not been filled by user. There are not  UnsolvedMetas{ since unification solved them. This is an error, since interaction points are never filled without user interaction.Agda(Found module name, expected module name.AgdapModule name, file from which it was loaded, file which the include path says contains the module. Scope errors0AgdahThe expr was used in the right hand side of an implicit module definition, but it wasn't of the form m Delta.PAgda>Failed to apply injectivity to constructor of indexed datatypeQAgda=Can't solve equation because variable occurs in (type of) lhsRAgda=Can't solve reflexive equation because --without-K is enabledVAgdaKError when splitting a pattern variable into possible constructor patterns.WAgdaNeither data type nor record.XAgda&Data type, but in irrelevant position.YAgda"Data type, but in erased position.ZAgdatSplit on codata not allowed. UNUSED, but keep! -- | NoRecordConstructor Type -- ^ record type, but no constructor\AgdaCopattern split with a catchall]Agda-We do not know the target type of the clause.^Agda!Target type is not a record type.aAgda Constructor.bAgdaContext for indices.cAgda,Inferred indices (from type of constructor).dAgda)Expected indices (from checking pattern).eAgda$Reason(s) why unification got stuck.fAgdaMInformation about a mutual block which did not pass the termination checker.hAgdaZThe functions which failed to check. (May not include automatically generated functions.)iAgdaThe problematic call sites.jAgdaInformation about a call.lAgdaTarget function name.mAgdaRange of the target function.nAgda+To be formatted representation of the call.qAgda"Range where the warning was raisedrAgdaThe warning itselfsAgdaDThe warning printed in the state and environment where it was raisedtAgda*Should the warning be affected by caching.uAgdazA non-fatal error is an error which does not prevent us from checking the document further and interacting with the user.yAgda!`CoverageIssue f pss` means that pss are not covered in f|AgdaDo not use directly with warning}AgdaDo not use directly with warning~AgdaDo not use directly with warningAgdaAIn `OldBuiltin old new`, the BUILTIN old has been replaced by newAgdaIf the user wrote just {-# REWRITE #-}.AgdaEIf the user wrote something other than an unqualified name in the as clause of an import statement. The 4f$ gives optionally extra explanation.AgdaQIf the user opens a module public before the module header. (See issue #2377.)Agda{An instance was declared with an implicit argument, which means it will never actually be considered by instance search.Agda}The type of an instance argument doesn't end in a named or variable type, so it will never be considered by instance search.AgdaVAs InstanceWithExplicitArg, but for local bindings rather than top-level instances.AgdaKThe --inversion-max-depth was reached. Generic warnings for one-off thingsAgda'Harmless generic warning (not an error)AgdaOGeneric error which doesn't abort proceedings (not a warning) Safe flag errorsAgda)`DeprecationWarning old new version`: old is deprecated, use new( instead. This will be an error in Agda version.Agda@User-defined warning (e.g. to mention that a name is deprecated)AgdaBSome imported names are not actually exported by the source moduleAgdaAImporting a file using an infective option into one which doesn'tAgdaCImporting a file not using a coinfective option from one which doesAgdaA candidate solution for an instance meta is a term with its type. It may be the case that the candidate is not fully applied yet or of the wrong type, hence the need for the type.AgdaAAdd implicit arguments in the end until type is no longer hidden .Agda!Do not append implicit arguments.Agda6Abstract things in the current module can be accessed.Agda#No abstract things can be accessed.Agda$All abstract things can be accessed.AgdaThe Context is a stack of s.Agda=The path to the file that is currently being type-checked. 39 if we do not have a file (like in interactive mode see  CommandLine).Agda4anonymous modules and their number of free variablesAgdato detect import cyclesAgda!the current (if any) mutual blockAgda/are we inside the scope of a termination pragmaAgda>Are we currently in the process of solving active constraints?AgdaOHave we stepped into the where-declarations of a clause? Everything under a where# will be checked with this flag on.Agda&Are we working on types? Turned on by  workOnTypes.AgdaAre we allowed to assign metas?AgdaWhen checking the typesignature of a public definition or the body of a non-abstract definition this is true. To prevent information about abstract things leaking outside the module.Agda7 component: Are we checking an irrelevant argument? (= IrrelevantE) Then top-level irrelevant declarations are enabled. Other value: Relevant*, then only relevant decls. are available.; component: Are we checking a runtime-irrelevant thing? (=<) Then runtime-irrelevant things are usable. Other value:  Quantity1, runtime relevant.  Quantity/ is not allowed here, see Bob Atkey, LiCS 2018.Agda+Sometimes we want to disable display forms.Agda8Interactive highlighting uses this range rather than .AgdajWhat is the current clause we are type-checking? Will be recorded in interaction points in this clause.Agdawhat we're doing at the momentAgdaSet to + when imported modules are type-checked.AgdaJThis number indicates how far away from the top-level module Agda has come when chasing modules. The level of a given module is not necessarily the same as the length, in the module dependency graph, of the shortest path from the top-level module; it depends on in which order Agda chooses to chase dependencies.AgdaWhen type-checking an alias f=e, we do not want to insert hidden arguments in the end, because these will become unsolved metas.Agda]We are reducing an application of this function. (For debugging of incomplete matches only.)AgdaYDid we encounter a simplification (proper match) during the current reduction process?AgdaDInjectivity can cause non-termination for unsolvable contraints (431, @3067). Keep a limit on the nesting depth of injectivity uses.Agda`Can we compare blocked things during conversion? No by default. Yes for rewriting feature.AgdaWhen TrueI, types will be omitted from printed pi types if they can be inferred.AgdaWhen True, throw away meta numbers and meta elims. This is used for reifying terms for feeding into the user's source code, e.g., for the interaction tactics solveAll.AgdaUsed by the scope checker to make sure that certain forms of expressions are not used inside dot patterns: extended lambdas and let-expressions.AgdarUntil we get a termination checker for instance search (#1743) we limit the search depth to ensure termination.Agda#3004: pattern lambdas with copatterns may refer to themselves. We don't have a good story for what to do in this case, but at least printing shouldn't loop. Here we keep track of which pattern lambdas we are currently in the process of printing.Agda+Use call-by-need evaluation for reductions.AgdahCheckpoints track the evolution of the context as we go under binders or refine it by pattern matching.AgdaOKeeps the substitution from each previous checkpoint to the current context.Agda"Should new metas generalized over.Agda(Values for used generalizable variables.AgdaMDo we check that options in imported files are consistent with each other?Agda Via stdout.AgdaBoth via files and via stdout.Agda;How much highlighting should be sent to the user interface?AgdaThis includes both non-interactive highlighting and interactive highlighting of the expression that is currently being type-checked.Agda-Builtin of any kind. Type can be checked (Just t) or inferred (NothingD). The second argument is the hook for the verification function.Agda2When typechecking something of the following form:"instance x : _ x = y it's not yet known where to add xQ, so we add it to a list of unresolved instances and we'll deal with it later.AgdaThe instance table is a Map' associating to every name of record data typepostulate its list of instancesAgda*Interaction command: show module contents.Agdaused by setCurrentRange$Agda Controlling reduce.%Agda:(Projection and) projection-like functions may be reduced.&Agda'Functions marked INLINE may be reduced.'Agda%Copattern definitions may be reduced.(Agda6Non-recursive functions and primitives may be reduced.)Agda(Even recursive functions may be reduced.*AgdaReduce  terms.+Agda9Functions whose termination has not (yet) been confirmed.,Agda0Functions that have failed termination checking.3AgdaNThree cases: 1. not reduced, 2. reduced, but blocked, 3. reduced, not blocked.9Agda"Did we encounter a simplifying reduction? In terms of CIC, that would be a iota-reduction. In terms of Agda, this is a constructor or literal pattern that matched. Just beta-reduction (substitution) or delta-reduction (unfolding of definitions) does not count as simplifying??Agda Postulate@Agda@Data or record type signature that doesn't yet have a definitionAAgda&Generalizable variable (introduced in  generalize block)BAgda Returned by  getConstInfo if definition is abstract.GAgdaPrimitive or builtin functions.JAgda3* while function is still type-checked. Just ccC after type and coverage checking and translation to case trees.KAgdauThe split tree constructed by the coverage checker. Needed to re-compile the clauses after forcing translation.LAgda2Intermediate representation for compiler backends.MAgda\Covering clauses computed by coverage checking. Erased by (IApply) confluence checking(?)OAgdaMutually recursive functions, datas and recordEs. Does include this function. Empty list if not recursive. Nothing- if not yet computed (by positivity checker).QAgda+Are the clauses of this definition delayed?RAgda(Is it a record projection? If yes, then return the name of the record type and index of the record argument. Start counting with 1, because 0 means that it is already applied to the record. (Can happen in module instantiation.) This information is used in the termination checker.TAgda9Has this function been termination checked? Did it pass?UAgdaIs this function generated from an extended lambda? If yes, then return the number of hidden and non-hidden lambda-lifted argumentsVAgdaZIs this a generated with-function? If yes, then what's the name of the parent function.WAgda)Is this a function defined by copatterns?XAgdaNumber of parameters.YAgdaNumber of indices.ZAgdadata or codata (legacy).[Agda(This might be in an instantiated module.\AgdaGConstructor names , ordered according to the order of their definition.^AgdaMutually recursive functions, datas and recordAs. Does include this data type. Empty if not recursive. Nothing- if not yet computed (by positivity checker).`Agda+Path constructor names (subset of dataCons)aAgdaNumber of parameters.bAgdaWas this record type created by a module application? If yes, the clause is its definition (linking back to the original record type).cAgdaConstructor name and fields.dAgdaDoes this record have a  constructor?eAgdaThe record field names.fAgdaCThe record field telescope. (Includes record parameters.) Note: $TelV recTel _ == telView' recConType . Thus, recTel is redundant.gAgdaMutually recursive functions, datas and record>s. Does include this record. Empty if not recursive. Nothing- if not yet computed (by positivity checker).hAgda#Eta-expand at this record type? False` for unguarded recursive records and coinductive records unless the user specifies otherwise.iAgda or *? Matters only for recursive records. 3T means that the user did not specify it, which is an error for recursive records.lAgdaNumber of parameters.mAgda+Number of arguments (excluding parameters).nAgdaPName of (original) constructor and fields. (This might be in a module instance.)oAgda Name of datatype or record type.qAgdaInductive or coinductive?rAgda"(cubical composition, projections)sAgdaLWhich arguments are forced (i.e. determined by the type of the constructor)?tAgdaOWhich arguments are erased at runtime (computed during compilation to treeless)wAgda for primitive functions, not null for builtin functions.xAgdaKBuiltin functions can have inverses. For instance, natural number addition.yAgda3 for primitive functions, 3 something for builtin functions.Agda<Should calls to this function be normalised at compile-time?Agda9Should calls to this function be inlined by the compiler?AgdaIs this function a macro?Agda(Should a record type admit eta-equality?AgdaUser specifed 'eta-equality' or 'no-eta-equality'.Agda0Positivity checker inferred whether eta is safe.Agda@Abstractions to build projection function (dropping parameters).Agda&Additional information for projection Cs.AgdaNothing if only projection-like, Just r if record projection. The r_ is the name of the record type projected from. This field is updated by module application.AgdaPThe original projection name (current name could be from module application).Agda-Type projected from. Original record type if projProper = Just{}. Also stores ArgInfoM of the principal argument. This field is unchanged by module application.AgdaIndex of the record argument. Start counting with 1, because 0 means that it is already applied to the record value. This can happen in module instantiation, but then either the record value is var 0, or funProjection == Nothing.AgdaTerm t to be be applied to record parameters and record value. The parameters will be dropped. In case of a proper projection, a postfix projection application will be created: t = pars r -> r .p2 (Invariant: the number of abstractions equals X.) In case of a projection-like function, just the function symbol is returned as : t = pars -> f.Agda,Additional information for extended lambdas.Agda.For complicated reasons the scope checker decides the QName of a pattern lambda, and thus its module. We really need to decide the module during type checking though, since if the lambda appears in a refined context the module picked by the scope checker has very much the wrong parameters.AgdaAn alternative representation of partial elements in a telescope:  "  . [ u , ... ,  u ] :  ! PartialP ("(_b b) T see cubicaltt paper (however we do not store the type T).Agda4the telescope , binding vars for the clauses,  " Agda?a system [ u , ... ,  u ] where ,  " b and , , b " ubAgda;The backends are responsible for parsing their own pragmas.AgdaJInformation about whether an argument is forced by the type of a function.Agda+Polarity for equality and subtype checking.AgdamonotoneAgdaantitoneAgdano information (mixed variance)AgdaconstantAgda5When lambda-lifting new args are generalizable if , also when the number is zero.AgdaHiding should not be used.AgdaType of the lifted definition.AgdaVariance information on arguments of the definition. Does not include info for dropped parameters to projection(-like) functions and constructors.AgdaPositivity information on arguments of the definition. Does not include info for dropped parameters to projection(-like) functions and constructors.Agda)How many arguments should be generalised.AgdaGives the name of the (bound variable) parameter for named generalized parameters. This is needed to bring it into scope when type checking the data/record definition corresponding to a type with generalized parameters.AgdaJust q/ when this definition is an instance of class qAgda:Has this function been created by a module instantiation?Agda-Is the def matched against in a rewrite rule?Agda8should compilers skip this? Used for e.g. cubical's compAgdaGShould the def be treated as injective by the pattern matching unifier?Agda?Rewrite rules can be added independently from function clauses.AgdaName of rewrite rule q :  ! f ps "a rhs where "a is the rewrite relation.Agda.Agdaf.Agda  " f ps : t.Agda  " rhs : t.Agda " t.Agda1Non-linear (non-constructor) first-order pattern.AgdapMatches anything (modulo non-linearity) that only contains bound variables that occur in the given arguments.Agda)Matches anything (e.g. irrelevant terms).AgdaMatches f esAgdaMatches  x ! tAgdaMatches  (x : A) ! BAgdaMatches x es# where x is a lambda-bound variableAgda'Matches the term modulo  (ideally ).AgdaA structured presentation of a  for reification into gh.Agda(f vs | ws) es. The first  is the parent function f with its args vs. The list of s are the with expressions ws . The  are additional arguments esl (possible in case the with-application is of function type) or projections (if it is of record type).Agdac vs.Agdad vs.Agda.v.Agdav.AgdaA  DisplayForm! is in essence a rewrite rule  q ts --> dt : for a defined symbol (could be a constructor as well) q. The right hand side is a  which is used to reify to a more readable gh. The patterns ts are just terms, but var 02 is interpreted as a hole. Each occurrence of var 0: is a new hole (pattern var). For each *occurrence* of var0 the rhs dt_ has a free variable. These are instantiated when matching a display form against a term q vs succeeds.AgdaNumber n of free variables in .AgdaLeft hand side patterns, where var 04 stands for a pattern variable. There should be n occurrences of var0 in  . The  is ignored in these patterns.AgdaRight hand side, with n free variables.Agda'The rewrite rules defined in this file.Agda0Which clause is an interaction point located in?Agda4The interaction point is not in the rhs of a clause.AgdaThe name of the function.Agda*The number of the clause of this function.AgdaThe original AST clause rhs.Agda/Data structure managing the interaction points.DWe never remove interaction points from this map, only set their  to True. (Issue #2368)AgdaInteraction points are created by the scope checker who sets the range. The meta variable is created by the type checker and then hooked up to the interaction point.Agda&The position of the interaction point.Agda0The meta variable, if any, holding the type etc.Agda/Has this interaction point already been solved?AgdaIThe clause of the interaction point (if any). Used for case splitting.Agda8For printing, we couple a meta with its name suggestion.AgdaEName suggestion for meta variable. Empty string means no suggestion.AgdaMetaInfo4 is cloned from one meta to the next during pruning.Agda7Run the extended occurs check that goes in definitions?AgdaUsed for printing. Just x8 if meta-variable comes from omitted argument with name x.AgdaDShould this meta be generalized if unsolved? If so, at what ArgInfo?AgdapMeta variable priority: When we have an equation between meta-variables, which one should be instantiated?6Higher value means higher priority to be instantiated. Agda( (xs : t ) ! e) : t This is not an instance of T as the domain type has already been checked. For example, when checking '( (x y : Fin _) ! e) : (x : Fin n) ! ? we want to postpone ( (y : Fin n) ! e) : ? where Fin n is a y rather than an T. Agda,Quote the given term and check type against  Agda Solving a p constraint may or may not check the target type. If it did, it returns a handle to any unsolved constraints.Agda4solved by term (abstracted over some free variables)AgdaunsolvedAgda+open, to be instantiated by instance searchAgda(solution blocked by unsolved constraintsAgdaFrozen meta variable cannot be instantiated by unification. This serves to prevent the completion of a definition by its use outside of the current block. (See issues 118, 288, 399).AgdaDo not instantiate.Agda4some metavariables are more eager to be instantiatedAgdaa metavariable doesn't have to depend on all variables in the context, this "permutation" will throw away the ones it does not depend on"AgdaBmeta variables scheduled for eta-expansion but blocked by this one#AgdaBare we past the point where we can instantiate this meta variable?$AgdaThe value of a generalizable variable. This is created to be a generalizable meta before checking the type to be generalized.,AgdaFParametrized since it is used without MetaId when creating a new meta.1Agda-A thing tagged with the context it came from.5AgdaAn extension of 9 to >=.AAgda,the two types are for the error message onlyHAgda+The range is the one of the absurd pattern.IAgdaCheck that the . is either not a SIZELT or a non-empty SIZELT.JAgdathe first argument is the instance argument, the second one is the meta on which the constraint may be blocked on and the third one is the list of candidates (or Nothing if we haven t determined the list of candidates yet)LAgdaCFirst argument is computation and the others are hole and goal type[AgdaHash of the source code.\AgdaThe source code. The source code is stored so that the HTML and LaTeX backends can generate their output without having to re-read the (possibly out of date) source code.]Agda4Source file type, determined from the file extension^Agda"Imported modules and their hashes._AgdaModule name of this interface.`AgdaScope defined by this module.yAndreas, AIM XX: Too avoid duplicate serialization, this field is not serialized, so if you deserialize an interface, iScope will be empty. But constructIScope constructs ` from a.aAgda1Scope after we loaded this interface. Used in *i and .j.cAgda-Display forms added for imported identifiers.dAgda&User warnings for imported identifiershAgdaPragma options set in the file.iAgdaiOptions/features used when checking the file (can be different from options set directly in the file).sAgda3@ if warnings were encountered when the module was type checked.tAgda3I if the module is a primitive module, which should always be importable.uAgdaDMaps source file names to the corresponding top-level module names.vAgdaCreate a fresh name from a.Agda0A complete log for a module will look like this:, entering the main module.$'Decl'/'EnterSection'/'LeaveSection'*, for declarations and nested modules, leaving the main module.AgdaNever a Section or ScopeDeclAgdaLike y, but storing the log for an ongoing type checking of a module. Stored in reverse order (last performed action first).AgdaA log of what the type checker does and states after the action is completed. The cached version is stored first executed action first.AgdaYA part of the state which is not reverted when an error is thrown or the state is reset.AgdawCallback function to call when there is a response to give to the interactive frontend. See the documentation of Q.AgdawStructure to track how much CPU time was spent on which Agda phase. Needs to be a strict field to avoid space leaks!AgdaShould be strict field.Agda`Cached typechecking state from the last loaded file. Should be Nothing when checking imports.Agda#Current backends with their optionsAgda)A mutual block of names in the signature.Agda&The original info of the mutual block.AgdaHighlighting info.AgdajDisambiguation carried out by the type checker. Maps position of first name character to disambiguated   for each  $ already passed by the type checker.AgdaTDirty when a constraint is added, used to prevent pointer update. Currently unused.AgdaDefinitions to be considered during occurs check. Initialized to the current mutual block before the check. During occurs check, we remove definitions from this set as soon we have checked them.AgdaeDeclared identifiers of the current file. These will be serialized after successful type checking.AgdaiFor each module remember the checkpoint corresponding to the orignal context of the module parameters.Agda-Display forms we add for imported identifiersAgda@The current module is available after it has been type checked.AgdaMap keeping track of concrete names assigned to each abstract name (can be more than one name in case the first one is shadowed)AgdaIMap keeping track of which names could maybe be shadowed by another nameAgdaZCounters to collect various statistics about meta variables etc. Only for current file.AgdaUHighlighting info for tokens (but not those tokens for which highlighting exists in ).Agda?Imported declared identifiers. Those most not be serialized!Agda2Pattern synonyms of the current file. Serialized.Agda3Imported pattern synonyms. Must not be serialized!AgdaFCollected generalizable variables; used during scope checking of termsAgda&Options applying to the current file. OPTIONS! pragmas only affect this field.Agda;Display forms added by someone else to imported identifiersAgda{-# FOREIGN #-}b code that should be included in the compiled output. Does not include code for imported modules.Agda Imported  UserWarnings, not to be stored in the  InterfaceAgdaLocally defined  UserWarnings, to be stored in the  InterfaceAgda/The state which is frozen after scope checking.Agda1The state which is modified after scope checking.Agda'State which is forever, like a diamond.AgdaEmpty persistent state.AgdaEmpty state of type checker.Agda Creates a u map based on . O(n log n).For a single reverse lookup in , rather use lookupModuleFromSourse. Agda Lookup an : in .O(n). AgdaGCombines the source hash and the (full) hashes of the imported modules. AgdaEmbed 9 into 5. Agda!Flip the direction of comparison.AgdaTurn a 9 function into a 5 function. Property:  dirToCmp f (fromCmp cmp) = f cmpAgda$By default, we have no display form.!Agda+Create a definition with sensible defaults.&Agda>Building the projection function (which drops the parameters).'Agda,The info of the principal (record) argument.(Agda3Make sure we do not overwrite a user specification.*AgdaIs the record type recursive?,AgdaA template for creating C% definitions, with sensible defaults.2AgdaBChecking whether we are dealing with a function yet to be defined.:Agda:Not quite all reductions (skip non-terminating reductions)AAgda+Are the clauses of this definition delayed?BAgda2Has the definition failed the termination checker?CAgdaAHas the definition not termination checked or did the check fail?FAgda&ifTopLevelAndHighlightingLevelIs l b m runs mV when we're type-checking the top-level module and either the highlighting level is at least l or b is 3.GAgda$ifTopLevelAndHighlightingLevelIs l m runs mO when we're type-checking the top-level module and the highlighting level is at least l.IAgdaProject  component of  }.Agda&Modify the lens-indicated part of the TCEnv in a subcomputation.Agda A variant of 6 in which the computation is strict in the new state.AgdaOverwrite the part of the  | focused on by the lens.AgdaModify the part of the  | focused on by the lens.Agda'Modify a part of the state monadically.Agda&Modify the lens-indicated part of the  | locally.Agda.Preserve the state of the failing computation.AgdaExecute a finalizer even when an exception is thrown. Does not catch any errors. In case both the regular computation and the finalizer throw an exception, the one of the finalizer is propagated.Agda4Running the type checking monad (most general form).AgdaARunning the type checking monad on toplevel (with initial state).Agda runs a safe  y action (a  y9 action which cannot fail) in the initial environment.Agda6Runs the given computation in a separate thread, with a copy' of the current state and environment.RNote that Agda sometimes uses actual, mutable state. If the computation given to forkTCM tries to modify\ this state, then bad things can happen, because accesses are not mutually exclusive. The forkTCM8 function has been added mainly to allow the thread to read7 (a snapshot of) the current state in a convenient way.Note also that exceptions which are raised in the thread are not propagated to the parent, so the thread should not do anything important.Agda&Base name for extended lambda patternsAgda<Check whether we have an definition from an extended lambda.Agda!Name of absurdLambda definitions.Agda:Check whether we have an definition from an absurd lambda.Agda.Base name for generalized variable projectionsAgda2Check whether we have a generalized variable fieldAgdaWe only 3j the name of the callee. Agda)Short-cutting disjunction forms a monoid. AgdaaWe store benchmark statistics in an IORef. This enables benchmarking pure computation, see Agda.Benchmarking. w x y z { | } ~GFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"      !HNMLKJIORQPSUTV`_^]\[ZYXWedcbafgihjknmloptsrqu~}|{zyxwv     "! #$,+*)('&%-./0213456879;:<=>BA@?EGCFDyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHz{}|~     #"! $%('&)+*,.-0/124358769;:<LKJIGFEDCBA@?>=HMNPOQRSXWVTUYZkjihgfedcba`_^]\[lmnopqtsruvwxyz{|~}      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ||~}z{xyvw wu pqtsronlmYZkjihgfedcba`_^]\[ RSXWVTU QMNPO<LKJIGFEDCBA@?>=H9;:5876  1243,.-0/)+*$%('&#"!       !"#$%&'(~z{}|)>BA@?EGCFDyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIH*+,-./01234567<=9;:687345/021.-89$,+*)('&%#:"! ;<=>?@ABCDE      ~FG }HIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwu~}|{zyxwvxoptsrqyz{jknmlfgihV`_^]\[ZYXWedcbaSUTORQPHNMLKJIGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"      !|}~ y z { x4None"#$,.14568=>?@ACEHPSUVX_`( AgdaicodeArgs proxy (a1, ..., an) maps icode over a1, ..., an* and returns the corresponding list of Int32. AgdaMonad used by the decoder.TCMJ is not used because the associated overheads would make decoding slower. AgdaMonad used by the encoder. AgdaState of the decoder. AgdaObtained from interface file. AgdaObtained from interface file. AgdaObtained from interface file. AgdaObtained from interface file. AgdaObtained from interface file.!AgdaZCreated and modified by decoder. Used to introduce sharing while deserializing objects.!Agda<Maps module names to file names. Constructed by the decoder.!AgdaThe include directories.!Agda=Univeral memo structure, to introduce sharing during decoding!Agda!Universal type, wraps everything.!AgdaState of the the encoder.!AgdaWritten to interface file.! AgdaWritten to interface file.! AgdaWritten to interface file.! AgdaWritten to interface file.! AgdavWritten to interface file. Dicitionaries which are not serialized, but provide short cuts to speed up serialization:! Agda~Not written to interface file. Andreas, Makoto, AIM XXI Memoizing A.Name does not buy us much if we already memoize A.QName.!AgdaNot written to interface file.!Agda@Not written to interface file. Fresh UIDs and reuse statistics:!AgdaIf True collect in stats the quantities of calls to icode for each  Typeable a.!AgdaNot written to interface file.!AgdaTwo  s are equal if their QNameId is equal.!AgdazStructure providing fresh identifiers for hash map and counting hash map hits (i.e. when no fresh identifier required).!AgdaNumber of hash map misses.!AgdaNumber of hash map hits.! Agda+The type of hashtables used in this module.0A very limited amount of testing indicates that 4g is somewhat slower than 4h , and that 4i and the hashtables from Data.Hashtable are much slower.!!Agda5Constructor tag (maybe omitted) and argument indices.!%Agda(Computing a qualified names composed ID.!&AgdaCreates an empty dictionary.!'AgdaEThrows an error which is suitable when the data stream is malformed.!(AgdaIncrease entry for a in !.!)Agda Data.Binary.runGetState is deprecated in favour of runGetIncremental. Reimplementing it in terms of the new function. The new Decoder type contains strict byte strings so we need to be careful not to feed the entire lazy byte string to the decoder at once.!/Agdaicode# only if thing has not seen before.!0Agdavcase value ix decodes thing represented by  ix :: Int32 via the valu function and stores it in !. If ix is present in !, valu, is not used, but the thing is read from ! instead.!1AgdaicodeN tag t a1 ... an serialises the arguments a1, ..., an of the constructor t together with a tag tagP picked to disambiguate between different constructors. It corresponds to 0icodeNode . (tag :) =<< mapM icode [a1, ..., an]!2AgdaicodeN' is the same as icodeN except that there is no tag AgdaSerialization (wrapper). AgdaSerialization (worker). AgdaDeserialization.!&AgdaCollect statistics for icode calls?!/Agda Memo structure for thing of key a.Agda Statistics.AgdaKey to the thing.Agda)Fallback computation to encode the thing.AgdaEncoded thing.G !!! !!!!!!!!!!!!!!!!!!! ! ! ! ! !!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4G!!! !!!!!"!#!$!!%!!!!!!!!!!!!!!!! ! ! ! ! !!&!!! !!! !' !(!)!*!+!,!-!.!/!0 !1!2 !3!4None"#$,.14568=>?@ACEPSX_`!nAgdaWAssumes that the first module in the import path is the module we are worried about.!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!nNone"#$,.14568=>?@ACEPSX_`ƹ!oAgda+Get the name of the current module, if any.!pAgda#Set the name of the current module.!qAgda*Get the path of the currently checked file!rAgda7Get the number of variables bound by anonymous modules.!sAgda+Add variables bound by an anonymous module.!tAgda(Set the current environment to the given!uAgdaGet the current environment!vAgdaDIncreases the module nesting level by one in the given computation.!wAgdaSet highlighting level!yAgdaRestore setting for  to default.!{AgdaoIf the reduced did a proper match (constructor or literal pattern), then record this as simplification step.!~Agda Lens for #.!AgdaReduce Def f vs only if f is a projection.!AgdaDAllow all reductions except for non-terminating functions (default).!Agda9Allow all reductions including non-terminating functions.!Agda<Don't use call-by-need evaluation for the given computation.!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!None"#$,.14568=>?@ACEPSX_`̗!AgdaConditionally render debug O and print it.!Agda#Conditionally println debug string.!Agda!Conditionally print debug string.!AgdaConditionally render debug O, print it, and then continue.!Agda=Print brackets around debug messages issued by a computation. !!!!!!!!!!! !!!!!!!!!!!None"#$,.14568=>?@ACEPSX_`׵!Agda/To be called before any write or restore calls.!Agda Writes a ( to the current log, using the current !AgdaORuns the action without cache and restores the current cache at the end of it.!Agda>Reads the next entry in the cached type check log, if present.!AgdaCEmpties the "to read" CachedState. To be used when it gets invalid.!AgdaMakes sure that the  is 3(, with a clean current log. Crashes is e is already active with a dirty log. Should be called when we start typechecking the current file.!AgdacCaches the current type check log. Discardes the old cache. Does nothing if caching is inactive. !!!!!!!!! !!!!!!!!!None"#$,.14568=>?@ACEPSX_`C!AgdaDClassifying warnings: some are benign, others are (non-fatal) errors!Agda(warnings that will be turned into errors!Agdauall warnings, including errors and benign ones Note: order of constructors is important for the derived Ord instance!AgdaapplyWarningModeg filters out the warnings the user has not requested Users are not allowed to ignore non-fatal errors.!Agda;Should we only emit a single warning with this constructor.!Agdarunning the Parse monad!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!None"#$,.14568=>?@ACEPSX_`'!Agda:Resets the non-persistent part of the type checking state.!Agda&Resets all of the type checking state. Keep only 8 and backend information.!AgdaRestore  |! after performing subcomputation.In contrast to k, the 8* info from the subcomputation is saved.!AgdaSame as !I but also returns the state in which we were just before reverting it.!Agda:Allow rolling back the state changes of a TCM computation.!AgdaA fresh TCM instance.OThe computation is run in a fresh state, with the exception that the persistent state is preserved. If the computation changes the state, then these changes are ignored, except for changes to the persistent state. (Changes to the persistent state are also ignored if errors other than type errors or IO exceptions are encountered.)!Agda Lens for .!AgdaGet the current scope.!AgdaSet the current scope.!Agda;Modify the current scope without updating the inverse maps.!AgdaModify the current scope.!Agda#Run a computation in a local scope.!AgdaSame as !-, but discard the scope from the computation.!Agda2Discard any changes to the scope by a computation.!Agda Scope error.!AgdaDebug print the scope.!Agda Update a possibly imported definition. Warning: changes made to imported definitions (during type checking) will not persist outside the current module. This function is currently used to update the compiled representation of a function during compilation.!AgdaJRun some computation in a different signature, restore original signature.!AgdaZSet the top-level module. This affects the global module id of freshly generated names.!AgdagUse a different top-level module for a computation. Used when generating names for imported modules."Agda Lens for ."Agda,Get both local and imported pattern synonyms"AgdaLens getter for 8 from  |." Agda Lens map for 8." AgdaLens getter for 8 from  y." AgdaLens modify for 8." Agda>Look through the signature and reconstruct the instance table." Agda Lens for ."Agda4Remove all instances whose type is still unresolved."Agda/Add an instance whose type is still unresolved."AgdaAdd instance to some `class'."AgdaName of the instance.AgdaName of the class.E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """"""E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """"""None"#$,.14568=>?@ACEPSX_`"AgdaaPass the current mutual block id or create a new mutual block if we are not already inside on."AgdaPSet the mutual block info for a block, possibly overwriting the existing one."Agda6Set the mutual block info for a block if non-existing."Agda&Set the mutual block for a definition."AgdaRGet the current mutual block, if any, otherwise a fresh mutual block is returned."Agda0Reverse lookup of a mutual block id for a names.""""""""""""""""None"#$,.14568=>?@ACEPSX_`"AgdaIWhen verbosity is set or changes, we need to turn benchmarking on or off.4jAgda(Check whether benchmarking is activated."AgdaaPrints the accumulated benchmark results. Does nothing if profiling is not activated at level 7.6NOghij789CGIJTMKLFH?OA@Y>D^X;:<=BENPQRSUVWZ[\]_`abcd""NO"hjig"None"#$,.14568=>?@ACEHPSVX_`"5"6"7"8"7"8"5"6None"#$,.14568=>?@ACEPSX_`K"eAgdaGMark a definition to be inlined if it satisfies the inlining criterion."e"eNone"#$,.14568=>?@ACEPSX_`"AgdaBThese builtins may use postulates, and are still considered --safe"AgdaThese builtins may not use postulates under --safe. They are not automatically unsafe, but will be if they use an unsafe feature.0"f"i"h"g"j"k"q"p"o"n"m"l"r"u"t"s"v"w"z"x"y"{"~"}"|"""""""""""""""""""""""0"""""""{"~"}"|"""w"z"x"y""v"r"u"t"s"""""""""k"q"p"o"n"m"l"""""j"f"i"h"g""None"#$,.14568=>?@ACEPSX_`;!ZAgda<Run a computation if a certain verbosity level is activated.-Precondition: The level must be non-negative.![Agda5Check whether a certain verbosity level is activated.-Precondition: The level must be non-negative.!\AgdaGets the include directories.Precondition: k must be nonempty (i.e. " must have run)."AgdaSets the pragma options."AgdaPSets the command line options (both persistent and pragma options are updated).Relative include directories are made absolute with respect to the current working directory. If the include directories have changed (thus, they are 3 now, and were previously 3 something>), then the state is reset (completely, see setIncludeDirs) ./An empty list of relative include directories (3 []) is interpreted as ["."]."AgdaDisable display forms."AgdaDisable display forms."Agda#Check if display forms are enabled."AgdaMMakes the given directories absolute and stores them as include directories.pIf the include directories change, then the state is reset (completely, except for the include directories and ). An empty list is interpreted as ["."]."AgdaShould only be run if "."Agda Return the i as : , if any."AgdamSwitch on printing of implicit and irrelevant arguments. E.g. for reification in with-function generation. Restores all => after completion. Thus, do not attempt to make persistent = changes in a " bracket."AgdaChange =* for a computation and restore afterwards."Agda%Retrieve the current verbosity level."AgdaCCheck whether a certain verbosity level is activated (exact match)."AgdaJRun a computation if a certain verbosity level is activated (exact match)."AgdaVerbosity lens."Agda%The base directory of relative paths."Agda%The base directory of relative paths."Agda%The base directory of relative paths."AgdaNew include directories.Agda%The base directory of relative paths.(!X!Y!Z![!\"""""""""""""""""""""""""""""""""""("""""""""""!\"""""""!Y"""""""""""""!X"![""!Z"None"#$,.124568=>?@ACEPSX_`g_"AgdaPerforms void (noAbs) abstraction over telescope."AgdaIf $v$ is a record value, canProject f v returns its field f."AgdaEliminate a constructed term."AgdadefApp f us vs applies Def f us to further arguments vs/, eliminating top projection redexes. If us` is not empty, we cannot have a projection redex, since the record argument is the first one."Agda  (x:A)->B(x) " [u] = B(u)gPrecondition: The type must contain the right number of pis without having to perform any reduction.piApply$ is potentially unsafe, the monadic piApplyM is preferable."AgdaIf permute  : [a] -> [a], then ,applySubst (renaming _ ) : Term  -> Term "AgdaIf permute  : [a] -> [a], then +applySubst (renamingR ) : Term  -> Term "AgdaNThe permutation should permute the corresponding context. (right-to-left list)"Agda  projDropParsApply proj o args = & proj o `apply' argssThis function is an optimization, saving us from construction lambdas we immediately remove through application."AgdalTakes off all exposed function domains from the given type. This means that it does not reduce to expose Pi-types."AgdatelView'UpTo n t takes off the first n exposed function types of t#. Takes off all (exposed ones) if n < 0."AgdaTurn a typed binding (x1 .. xn : A) into a telescope."AgdaTurn a typed binding (x1 .. xn : A) into a telescope."Agda )mkPi dom t = telePi (telFromList [dom]) t"Agda)Uses free variable analysis to introduce  bindings."AgdaEverything will be an ~."Agda]Abstract over a telescope in a term, producing lambdas. Dumb abstraction: Always produces ~, never .$The implementation is sound because r does not use ."AgdaGiven arguments vs : tel= (vector typing), extract their individual types. Returns Nothing is tel is not long enough."AgdaIn compiled clauses, the variables in the clause body are relative to the pattern variables (including dot patterns) instead of the clause telescope."AgdaGet the next higher sort."AgdaQCompute the sort of a function type from the sorts of its domain and codomain."AgdaKCompute the sort of a pi type from the sorts of its domain and codomain."AgdazEquality of binders relies on weakening which is a special case of renaming which is a special case of substitution.#Agda Syntactic  equality, ignores stuff below DontCare and sharing.#Agda Syntactic y$ equality, ignores sort annotations.#>Agdatel " ( " lhs ! rhs : t) becomes tel,  " lhs ! rhs : t)\ we do not need to change lhs, rhs, and t since they live in . See 'Abstract Clause'.#[Agda)Make sure we only drop variable patterns.c$ !"#vwxy !"#$%&'()*+,-./01234567"""""""""""""""""""""""""""""""""""""""""""""""""9"""""""""""""""""""""""""""""""""""""""""""""""""$ !"#None"#$,.14568=>?@ACEPSX_`o#{Agda+Create an open term in the current context.#|Agda`Extract the value from an open term. The checkpoint at which it was created must be in scope.#}Agda-Extract the value from an open term. Returns 3> if the checkpoint at which it was created is not in scope.#~AgdaAn 1" is closed if it has checkpoint 0.#{#|#}#~#{#|#}#~None"#$,.14568=>?@ACEPSX_`} #AgdaThe coinductive primitives.#AgdagetTerm use name looks up nameA as a primitive or builtin, and throws an error otherwise. The useL argument describes how the name is used for the sake of the error message.#Agda2Rewrite a literal to constructor form if possible.$CAgdaTries to build a #.$MAgda_Check whether the type is actually an path (lhs "a rhs) and extract lhs, rhs, and their type.Precondition: type is reduced.$OAgdaNon dependent Path$QAgda Revert the  .Postcondition: type is reduced.$RAgda"Get the name of the equality type.$SAgdacCheck whether the type is actually an equality (lhs "a rhs) and extract lhs, rhs, and their type.Precondition: type is reduced.$TAgda Revert the .Postcondition: type is reduced.$UAgda(Primitives with typechecking constrants.tuvwxyz{|}~      !"#$%#################################################################################################################################$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V#################################################################################################################################$$$$$$$$$$ $ $ $ $ $$$$$$$$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$VNone"#$,.14568=>?@ACEPSX_`$[AgdasimplifyLevelConstraint c cs turns an cp into an equality constraint if it is an inequality constraint and the reverse inequality is contained in cs.The constraints doesn't necessarily have to live in the same context, but they do need to be universally quanitfied over the context. This function takes care of renaming variables when checking for matches.4kAgdaICheck if two inequality constraints are the same up to variable renaming.4lAgdaGTurn a level constraint into a list of level inequalities, if possible.$[$[None"#$,.14568=>?@ACEPSX_`$^Agda:When making a function projection-like, we drop the first n arguments.$aAgdaTo drop the first nL arguments in a compiled clause, we reduce the split argument indices by n and drop n arguments from the bodies. NOTE: this only works for non-recursive functions, we are not dropping arguments to recursive calls in bodies.$bAgdamUse for dropping initial lambdas in clause bodies. NOTE: does not reduce term, need lambdas to be present.$dAgda,NOTE: does not work for recursive functions.$fAgda=NOTE: This creates telescopes with unbound de Bruijn indices.$^$_$^$_None"#$,.14568=>?@ACEMPSX_`$yAgdaStrenghtening.$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$r$s$p$q$n$o$t$u$v$l$m$w$x$j$k$h$i$yNone"#$,.14568=>?@ACEPSX_`4mAgda0Don't generate fresh names for unused variables.None"#$,.14568=>?@ACEPSX_`4nAgda,Split alts into TAGuard alts and other alts.$$None"#$,.14568=>?@ACEPSX_`$$None"#$,.14568=>?@ACEPSX_`$$None"#$,.14568=>?@ACEPSX_`$AgdaPWe lose track of @-patterns in the internal syntax. This pass puts them back.$$None"#$,.14568=>?@ACEPSX_`$Agda$Record a function call in the trace.$AgdaSets the current range (for error messages etc.) to the range of the given object, if it has a range (i.e., its range is not ).$$$$$$$$$$None"#$,.14568=>?@ACEPSX_`% "cAgdaEnsures that the module name matches the file name. The file corresponding to the module name (according to the include path) has to be the same as the given file name."dAgdaDComputes the module name of the top-level module in the given file.eIf no top-level module name is given, then an attempt is made to use the file name as a module name.$Agda9Errors which can arise when trying to find a source file."Invariant: All paths are absolute.$AgdaHThe file was not found. It should have had one of the given file names.$Agda"Several matching files were found.AInvariant: The list of matching files has at least two elements.$AgdaEConverts an Agda file name to the corresponding interface file name.$AgdaKGiven the module name which the error applies to this function converts a $ to a .$AgdagFinds the source file corresponding to a given top-level module name. The returned paths are absolute.,Raises an error if the file cannot be found.$AgdaqTries to find the source file corresponding to a given top-level module name. The returned paths are absolute.SIDE EFFECT: Updates .$Agda A variant of $ which does not require  y.$AgdajFinds the interface file corresponding to a given top-level module name. The returned paths are absolute.ARaises an error if the source file cannot be found, and returns 3= if the source file can be found but not the interface file."cAgdaThe name of the module.Agda"The file from which it was loaded.Agda3The expected name, coming from an import statement."dAgdaThe path to the file.AgdaThe parsed module.$AgdaInclude paths.AgdaCached invocations of $. An updated copy is returned. "c"d$$$$$$$$$$$ $$$$$$$$$"c"d$$None"#$,.124568=>?@ACEPSX_`$Agda*Ranges that should be serialised properly.$Agda"Ranges are always deserialised as .$$$$$$None"#$,.14568=>?@ACEPSX_`None"#$,.14568=>?@ACEPSX_`͂$AgdaGet the statistics.$Agda)Modify the statistics via given function.$AgdaIncrease specified counter by 1.$AgdaIncrease specified counter by n.%AgdaBSet the specified counter to the maximum of its current value and n.4oAgda'Modify specified counter by a function f.%AgdaAPrint the given statistics if verbosity "profile.ticks" is given.$$$$%%$$%$$%None"#$,.14568=>?@ACEPSX_`%AgdaA deep view on sizes.%AgdaA useful view on sizes.%AgdaCheck if a type is the # type. The argument should be reduced.%Agda)Result of querying whether size variable i is bounded by another size.%Agdayes  i : Size< t%AgdaQTest whether OPTIONS --sized-types and whether the size built-ins are defined.%Agda+Test whether the SIZELT builtin is defined.%Agda$Add polarity info to a SIZE builtin.%AgdaThe sort of built-in types SIZE and SIZELT.% AgdaThe type of built-in types SIZE and SIZELT.%!AgdaThe built-in type SIZE with user-given name.%"AgdaThe built-in type SIZE.%#Agda The name of SIZESUC.%&Agda>Transform list of terms into a term build from binary maximum.%'AgdaExpects argument to be reduced.%(AgdasizeViewComparable v w checks whether v >= w (then Left) or v <= w (then Right ). If uncomparable, it returns  NotComparable.%*AgdasizeViewPred k v decrements v by k (must be possible!).%+AgdasizeViewOffset v8 returns the number of successors or Nothing when infty.%,Agda'Remove successors common to both sides.%-AgdaTurn a size view into a term.%0AgdamaxViewCons v ws = max v ws. It only adds v to ws+ if it is not subsumed by an element of ws.%1AgdasizeViewComparableWithMax v ws tries to find w in ws that compares with v+ and singles this out. Precondition:  v /= DSizeInv.2%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%32%%%%%%%%%%%%%%% %!%"%#%$%%%&%%%%%'% %% % % % %%%%%(%)%*%+%,%-%.%%%/%0%1%2%3None"#$,.14568=>?@ACEPSX\_`"%CAgdaBool: did we copy recursively? We need to track this because we don't copy recursively when creating new modules for reexported functions (issue1985), but we might need to copy recursively later.%EAgdaTo simplify interaction between scope checking and type checking (in particular when chasing imports), we use the same monad.%NAgda-Create a new module with an empty scope. (Just' if it is a datatype or record module.)%OAgda"Apply a function to the scope map.%PAgda$Apply a function to the given scope.%RAgda*Apply a monadic function to the top scope.%SAgda&Apply a function to the current scope.%UAgda5Apply a function to the public or private name space.%\Agda7Run a computation without changing the local variables.%_Agda]After collecting some variable names in the scopeVarsToBind, bind them all simultaneously.%`Agda2Create a fresh abstract name from a concrete name.MThis function is used when we translate a concrete name in a binder. The y) of the concrete name is saved as the   of the abstract name.%aAgda 0freshAbstractName_ = freshAbstractName noFixity'%bAgda'Create a fresh abstract qualified name.%dAgda?Look up the abstract name referred to by a given concrete name.%eAgdaVLook up the abstract name corresponding to a concrete name of a certain kind and/or from a given set of names. Sometimes we know already that we are dealing with a constructor or pattern synonym (e.g. when we have parsed a pattern). Then, we can ignore conflicting definitions of that name of a different kind. (See issue 822.)%fAgdaLook up a module in the scope.%gAgda'Get the fixity of a not yet bound name.%hAgda+Get the polarities of a not yet bound name.%iAgdayCollect the fixity/syntax declarations and polarity pragmas from the list of declarations and store them in the scope.%jAgda?Get the notation of a name. The name is assumed to be in scope.%kAgdaBind a variable.%lAgda;Temporarily unbind a variable. Used for non-recursive lets.%mAgda.Bind a defined name. Must not shadow anything.%oAgda}Rebind a name. Use with care! Ulf, 2014-06-29: Currently used to rebind the name defined by an unquoteDecl, which is a  in the body, but a  later on.%pAgdaBind a module name.%qAgdaHBind a qualified module name. Adds it to the imports field of the scope.%rAgda Clear the scope of any no names.%tAgdaCreate a new scope with the given name from an old scope. Renames public names in the old scope to match the new name and returns the renamings.%uAgdaSApply an import directive and check that all the names mentioned actually exist.%vAgdaA finite map for  ImportedNames.%wAgdaTranslation of ImportDirective.%xAgdaTranslation of Using or Hiding.%yAgdaTranslation of Renaming.%{AgdaOpen a module.%jAgda9The name must correspond to one of the names in this set.%kAgda, , let, ...?AgdaConcrete name.AgdaAbstract name.%wAgdaTranslation of imported names.Agda,Translation of names defined by this import.%xAgdaTranslation of names in using or hiding list.%yAgdaTranslation of F names and module names.AgdaTranslation of rento names and module names.Agda Renaming before translation (1).Agda Renaming after translation (2).?%=%?%>%@%A%C%B%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{?%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%D%@%A%C%B%s%t%u%v%w%x%y%=%?%>%z%{None"#$,.14568=>?@ACEPSX_`>!!AgdaSGet the substitution from the context at a given checkpoint to the current context.%}AgdaWrapper to tell % not to mark names as !Z. Used when adding a user-provided, but already type checked, telescope to the context.%AgdaVarious specializations of addCtx.%Agda Modify a  in a computation.%Agda7Change to top (=empty) context. Resets the checkpoints.%AgdaVChange to top (=empty) context, but don't update the checkpoints. Totally not safe!%AgdaDelete the last n bindings from the context.iDoesn't update checkpoints! Use `updateContext rho (drop n)` instead, for an appropriate substitution rho.%Agda*Add a new checkpoint. Do not use directly!%AgdaOUpdate the context. Requires a substitution from the old context to the new.%AgdaSGet the substitution from the context at a given checkpoint to the current context.%AgdaGet substitution   "  : m where  is the current context and m- is the module parameter telescope of module m.+In case the we don't have a checkpoint for m] we return the identity substitution. This is ok for instance if we are outside module mX (in which case we have to supply all module parameters to any symbol defined within m we want to refer).%AgdaaddCtx x arg cont add a variable to the context.Chooses an unused  .7Warning: Does not update module parameter substitution!%Agda;Go under an abstraction. Do not extend context in case of .%Agda"Go under an abstraction, treating  as ~.%AgdaKGo under an abstract without worrying about the type to add to the context.%AgdaAdd a let bound variable%AgdaAdd a let bound variable%AgdaGet the current context.%Agda$Get the size of the current context.%Agda Generate [var (n - 1), ..., var 0]% for all declarations in the context.%Agda Generate [var (n - 1), ..., var 0]% for all declarations in the context.%AgdaGet the current context as a r.%Agda1Get the names of all declarations in the context.%Agda0get type of bound variable (i.e. deBruijn index)%AgdaGet the term corresponding to a named variable. If it is a lambda bound variable the deBruijn index is returned and if it is a let bound variable its definition is returned.#!%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#%%%%%%!%%%%%%%%}%~%%%%%%%%%%%%%%%%%%%None"#$,.14568=>?@ACEPSX\_`D<!AgdaoLookup the definition of a name. The result is a closed thing, all free variables have been abstracted over.!Agda Version that reports exceptions:!Agda4Lookup the rewrite rules with the given head symbol.!AgdaSignature lookup errors.!Agda8The name is not in the signature; default error message.!Agda0The name is not available, since it is abstract.!AgdaLookup a section telescope._If it doesn't exist, like in hierarchical top-level modules, the section telescope is empty.!AgdaUnless all variables in the context are module parameters, create a fresh module to capture the non-module parameters. Used when unquoting to make sure generated definitions work properly.%AgdaCAdd a constant to the signature. Lifts the definition to top level.%Agda2Set termination info of a defined function symbol.%Agda1Set CompiledClauses of a defined function symbol.%Agda+Set SplitTree of a defined function symbol.%Agda!Modify the clauses of a function.%AgdaPLifts clauses to the top-level and adds them to definition. Also adjusts the W field if necessary.%Agda#Add a compiler pragma `{-# COMPILE  backend  name  text #-}`%AgdaAdd a section to the signature.[The current context will be stored as the cumulative module parameters for this section.%AgdaCSets the checkpoint for the given module to the current checkpoint.%AgdaGet a section.Why Maybe? The reason is that we look up all prefixes of a module to compute number of parameters, and for hierarchical top-level modules, A.B.C say, A and A.B do not exist.%Agda>Module application (followed by module parameter abstraction).%AgdaLAdd a display form to a definition (could be in this or imported signature).%AgdaCFind all names used (recursively) by display forms of a given name.%Agda#Check if a display form is looping.%AgdaNCan be called on either a (co)datatype, a record type or a (co)constructor.%Agda?Does the given constructor come from a single-constructor type?5Precondition: The name has to refer to a constructor.%AgdaStandard eliminator for !.%Agda`Get the original name of the projection (the current one could be from a module application).%Agda%Look up the polarity of a definition.%AgdaMLook up polarity of a definition and compose with polarity represented by 9.%Agda!Set the polarity of a definition.%Agda-Look up the forced arguments of a definition.%Agda*Get argument occurrence info for argument i of definition d (never fails).%Agda Sets the I for the given identifier (which should already exist in the signature).%Agda#add data constructors to a datatype%AgdaFGet the mutually recursive identifiers of a symbol from the signature.%Agda.Get the mutually recursive identifiers from a .%Agda'Set the mutually recursive identifiers.%Agda5Check whether two definitions are mutually recursive.%Agda A functiondataVrecord definition is nonRecursive if it is not even mutually recursive with itself.%Agda3Get the number of parameters to the current module.%AgdaCompute the number of free variables of a defined name. This is the sum of number of parameters shared with the current module and the number of anonymous variables (if the name comes from a let-bound module).%Agda7Compute the context variables to apply a definition to.We have to insert the module telescope of the common prefix of the current module and the module where the definition comes from. (Properly raised to the current context.) Example:  module M  where module M  where f = ... module M  where ... M .M .f [insert  raised by ] %AgdaPInstantiate a closed definition with the correct part of the current context.%Agda'Give the abstract view of a definition.%AgdaOEnter abstract mode. Abstract definition in the current module are transparent.%Agda:Not in abstract mode. All abstract definitions are opaque.%Agda?Ignore abstract mode. All abstract definitions are transparent.%AgdaeEnter concrete or abstract mode depending on whether the given identifier is concrete or abstract.%AgdaMCheck whether a name might have to be treated abstractly (either if we're %d or it's not a local name). Returns true for things not declared abstract as well, but for those % will have no effect.%AgdaAndreas, 2015-07-01: If the current~ module is a weak suffix of the identifier module, we can see through its abstract definition if we are abstract. (Then treatAbstractly' returns False).<If I am not mistaken, then we cannot see definitions in the where block of an abstract function from the perspective of the function, because then the current module is a strict prefix of the module of the local identifier. This problem is fixed by removing trailing anonymous module name parts (underscores) from both names.%Agda<Get type of a constant, instantiated to the current context.%AgdaGet relevance of a constant.%AgdaGet modality of a constant.%AgdapThe number of dropped parameters for a definition. 0 except for projection(-like) functions and constructors.%Agda&Is it the name of a record projection?%AgdaIs it a function marked STATIC?%AgdaIs it a function marked INLINE?%AgdaReturns True if we are dealing with a proper projection, i.e., not a projection-like function nor a record field value (projection applied to argument).%AgdaDNumber of dropped initial arguments of a projection(-like) function.%Agda+Check whether a definition uses copatterns.%AgdaApply a function fF to its first argument, producing the proper postfix projection if f is a projection.%Agda/Name of new module defined by the module macro.AgdaParameters of new module.Agda(Name of old module applied to arguments.Agda Arguments of module application.AgdaImported names and modules[!!!!!!!!!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[%%%%%%%%%%%%%%%%%!%%%%%%%%%%%%!!!%!!!!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!%%%%%%%%%%%%%%%%%%%%%%None"#$,.14568=>?@ACEPSX_`&& & && & None"#$,.14568=>?@ACEPSX\_` %& AgdacUnfreeze meta and its type if this is a meta again. Does not unfreeze deep occurrences of metas.& AgdapCheck whether all metas are instantiated. Precondition: argument is a meta (in some form) or a list of metas.&AgdaSwitch off assignment of metas.&AgdaGet the meta store.&Agda8Run a computation and record which new metas it created.&AgdaLookup a meta variable.&Agda7Update the information associated with a meta variable.&AgdaKInsert a new meta variable with associated information into the meta store.&AgdaZCompute the context variables that a meta should be applied to, accounting for pruning.&Agda=Given a meta, return the type applied to the current context.&AgdaOReturns every meta-variable occurrence in the given type, except for those in s.&AgdaReturns all metavariables in a constraint. Slightly complicated by the fact that blocked terms are represented by two meta variables. To find the second one we need to look up the meta listeners for the one in the UnBlock constraint.& AgdaCreate  in the current environment.&)AgdafRegister an interaction point during scope checking. If there is no interaction id yet, create one.&*AgdaFind an interaction point by y by searching the whole map.<O(n): linear in the number of registered interaction points.&+Agda+Hook up meta variable to interaction point.&,Agda$Mark an interaction point as solved.&-AgdaGet a list of interaction ids.&.Agda:Get all metas that correspond to unsolved interaction ids.&/Agda:Get all metas that correspond to unsolved interaction ids.&0Agda:Does the meta variable correspond to an interaction point?Time: O(n) where n$ is the number of interaction metas.&1Agda7Get the information associated to an interaction point.&2AgdaGet bK for an interaction point. Precondition: interaction point is connected.&3AgdaKCheck whether an interaction id is already associated with a meta variable.&5AgdaGenerate new meta variable.&6AgdajGenerate a new meta variable with some instantiation given. For instance, the instantiation could be a .&7AgdaGet the y for an interaction point.&8AgdaGet the y for a meta variable.&AAgdalistenToMeta l m : register l as a listener to m3. This is done when the type of l is blocked by m.&BAgdaUnregister a listener.&CAgdaGet the listeners to a meta.&EAgdaKFreeze all so far unfrozen metas for the duration of the given computation.&FAgdaGFreeze all meta variables and return the list of metas that got frozen.&GAgdaHFreeze some meta variables and return the list of metas that got frozen.&HAgdaThaw all meta variables.&IAgda6Thaw some metas, as indicated by the passed condition.&KAgdaDoes not worry about raising.@& & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J@&&&&&&&&&&&&&&& &&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J& & None"#$,.14568=>?@ACEPSX_`Ӣ&`AgdaMAdd all constraints belonging to the given problem to the current problem(s).&eAgdaGet the awake constraints&jAgdaSuspend constraints matching the predicate during the execution of the second argument. Caution: held sleeping constraints will not be woken up by events that would normally trigger a wakeup call.&rAgdaAdd new a constraint&uAgdaAdd already awake constraints&vAgdaStart solving constraints&]&_&^&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&`&a&b&c&d&e&f&g&h&i&]&_&^&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{lNone"#$,.14568=>?@ACEPSX_`Ր w x y z { | } ~!      "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123546789:;<=>DFCGE?@ABHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<H=>?@ABCDEFGIJKLMNOPQRSUTVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """""""""""""""""""""""""""""""""""""""""""""""""#{#|#}#~$$$$$$$$$%%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{None"#$,.14568=>?@ACEPSX_`*None"#$,.14568=>?@ACEPSX_`(None"#$,.14568=>?@ACEPSX_`&None"#$,.14568=>?@ACEPSX_`$None"#$,.14568=>?@ACEPSX_`None"#$,.14568=>?@ACEPSX_`x&AgdadEncodes something. To ensure relocatability file paths in positions are replaced with module names.&Agda:Decodes something. The result depends on the include path.Returns 3f if the input does not start with the right magic number or some other decoding error is encountered.&AgdadEncodes something. To ensure relocatability file paths in positions are replaced with module names.&Agda:Decodes something. The result depends on the include path.Returns 3e if the file does not start with the right magic number or some other decoding error is encountered.4pAgdaStore a u (map from  AbsolutePath to TopLevelModuleName) as map from  AbsolutePath to Int32t, in order to directly get the identifiers from absolute pathes rather than going through top level module names.4pAgda{Maps file names to the corresponding module names. Must contain a mapping for every file name that is later encountered. &&&&&&&&&&&&&& None"#$,.14568=>?@ACEPSX_`t&Agda;Apply a function if a certain verbosity level is activated.-Precondition: The level must be non-negative. !&&&&&&&& &&&&&!&&&None"#$,.14568=>?@ACEHPSVX_`&AgdaBExpand literal integer pattern into suc/zero constructor patterns.&Agda7Expand away (deeply) all pattern synonyms in a pattern.&&&&&&&&None"#$,.14568=>?@ACEPSX_` ''''None"#$,.14568=>?@ACEPSX_`'Agda3Contracts all eta-redexes it sees without reducing.'Agda5If record constructor, call eta-contraction function.'Agda%Try to contract a lambda-abstraction Lam i (Abs x b).'AgdaConstructor name c.AgdaConstructor info ci.AgdaConstructor arguments args.Agda9Eta-contraction workhorse, gets also name of record type.AgdaReturns  Con c ci args or its eta-contraction.'AgdaInfo i of the .AgdaName x of the abstraction.AgdaBody () b of the ~.AgdaLam i (Abs x b), eta-contracted if possible.''''''''''''''''None"#$,.14568=>?@ACEPSX\_`('AgdainstantiateFull' '*5s metas everywhere (and recursively) but does not ',.'#AgdauOnly unfold definitions if this leads to simplification which means that a constructor/literal pattern is matched.'(AgdaInstantiate something. Results in an open meta variable or a non meta. Doesn't do any reduction, and preserves blocking tags (when blocking meta is uninstantiated).'/AgdamNormalise the given term but also preserve blocking tags TODO: implement a more efficient version of this.'1Agda+Meaning no metas left in the instantiation.'2AgdaCase on whether a term is blocked on a meta (or is a meta). That means it can change its shape when the meta is instantiated.'4Agda;Case on whether a type is blocked on a meta (or is a meta).'>AgdaIf the first argument is 30, then a single delayed clause may be unfolded.'BAgdaIReduce a non-primitive definition if it is a copy linking to another def.'CAgda*Reduce simple (single clause) definitions.'DAgda!Unfold a single inlined function.'EAgdapApply a definition using the compiled clauses, or fall back to ordinary clauses if no compiled clauses exist.'GAgdaApply a defined function to it's arguments, using the compiled clauses. The original term is the first argument applied to the third.'IAgdaGApply a defined function to it's arguments, using the original clauses..'' '!'"'#'$'%'''&'(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L.'*'+','-'.'/'0'1'(')'2'3'4'5'%'''&'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'#'$'K'!'"'L'' None"#$,.14568=>?@ACEPSX_`"#xAgdaA safe variant of ".#zAgda+Gather leading s of a type in a telescope.'Agda  [ (i,(x,y)) ] = [(i=0) -> x, (i=1) -> y]'AgdaA telescope split in two.'Agda;The permutation takes us from the original telescope to firstPart ++ secondPart.'Agda(Flatten telescope: ( : Tel) -> [Type ]'AgdaYOrder a flattened telescope in the correct dependeny order:  -> Permutation ( -> ~)Since reorderTel tel( uses free variable analysis of type in tel, the telescope should be '.d.'Agda\Unflatten: turns a flattened telescope into a proper telescope. Must be properly ordered.'Agda(Get the suggested names from a telescope'Agda A variant of ' which takes the argument names (and the argument info) from the first telescope and the variable names from the second telescope.6Precondition: the two telescopes have the same length.'Agda.Split the telescope at the specified position.'AgdaPermute telescope: permutes or drops the types in the telescope according to the given permutation. Assumes that the permutation preserves the dependencies in the telescope.3For example (Andreas, 2016-12-18, issue #2344): x tel = (A : Set) (X : _18 A) (i : Fin (_m_23 A X)) tel (de Bruijn) = 2:Set, 1:_18 0, 0:Fin(_m_23 1 /0) flattenTel tel = 2:Set, 1:_18 0, 0:Fin(_m_23 1 0) |- [ Set, _18 2, Fin (_m_23 2 1) ] perm = 0,1,2 -> 0,1 (picks the first two) renaming _ perm = [var 0, var 1, error] -- THE WRONG RENAMING! renaming _ (flipP perm) = [error, var 1, var 0] -- The correct renaming! apply to flattened tel = ... |- [ Set, _18 1, Fin (_m_23 1 60) ] permute perm it = ... |- [ Set, _18 11 ] unflatten (de Bruijn) = 1:Set, 0: _18 90 unflatten = (A : Set) (X : _18 A) 'AgdaRecursively computes dependencies of a set of variables in a given telescope. Any dependencies outside of the telescope are ignored.'Agda^Split a telescope into the part that defines the given variables and the part that doesn't.See mn.'Agda|As splitTelescope, but fails if any additional variables or reordering would be needed to make the first part well-typed.'AgdaTry to instantiate one variable in the telescope (given by its de Bruijn level) with the given value, returning the new telescope and a substitution to the old one. Returns Nothing if the given value depends (directly or indirectly) on the variable.'AgdaQTry to eta-expand one variable in the telescope (given by its de Bruijn level)'AgdatelViewUpTo n t takes off the first n function types of t. Takes off all if n < 0.(AgdatelViewUpTo' n p t takes off $t$ the first n (or arbitrary many if n < 0-) function domains as long as they satify p.(AgdatelViewUpToPath n t takes off $t$ the first n (or arbitrary many if n < 0!) function domains or Path types.(AgdaLike telViewUpToPath but also returns the Boundarya expected by the Path types encountered. The boundary terms live in the telescope given by the TelViewc. Each point of the boundary has the type of the codomain of the Path type it got taken from, see  fullBoundary.(Agda8(TelV  b, [(i,t_i,u_i)]) <- telViewUpToPathBoundary n ah Input:  " a Output:  " b  " i : I  " [ (i=0) -> t_i; (i=1) -> u_i ] : b(Agda9(TelV  b, [(i,t_i,u_i)]) <- telViewUpToPathBoundaryP n a Input:  " a Output: . " b . " T is the codomain of the PathP at variable i . " i : I . " [ (i=0) -> t_i; (i=1) -> u_i ] : T Useful to reconstruct IApplyP patterns after teleNamedArgs .(AgdateleElimsB args bs = es Input: . " args :  . " T is the codomain of the PathP at variable i . " i : I . " bs = [ (i=0) -> t_i; (i=1) -> u_i ] : T Output: . | PiPath  bs A " es : A( Agda'returns Left (a,b) in case the type is Pi a b or  PathP b _ _ assumes the type is in whnf.(AgdaDecomposing a function type.(AgdaIf the given type is a Piu, pass its parts to the first continuation. If not (or blocked), pass the reduced type to the second continuation.(AgdaIf the given type is a Piu, pass its parts to the first continuation. If not (or blocked), pass the reduced type to the second continuation.(Agda&If the given type is blocked or not a Pi;, pass it reduced to the first continuation. If it is a Pi,, pass its parts to the second continuation.(Agda&If the given type is blocked or not a Pi;, pass it reduced to the first continuation. If it is a Pi,, pass its parts to the second continuation.(AgdaCompute type arity(AgdaoStrips all hidden and instance Pi's and return the argument telescope and head definition name, if possible.(Agda:Register the definition with the given type as an instance(AgdaTry to solve the instance definitions whose type is not yet known, report an error if it doesn't work and return the instance table otherwise.'AgdaA set of de Bruijn indices.AgdaOriginal telescope.Agda firstPart mentions the given variables,  secondPart not.'AgdaA list of de Bruijn indicesAgdaThe telescope to splitAgda firstPart5 mentions the given variables in the given order,  secondPart contains all other variables'Agda" Agda0 " var k_i : A_i ascending order,  " u_i : A_i'Agda" Agda  " var k : AAgda  " u : A@#x#y#z''''''''''''''''''''''''''''''''(((((((((( ( ( ( ( (((((((((((((((@'''''''''''''''''''''''#z'(((''((((((( ( ( ( ( ((((((((((#x#y(''''''((((None"#$,.14568=>?@ACEPSX_` (!Agda,Instantiate full as long as things are equal4qAgda%Monad for checking syntactic equality("Agda'Syntactic equality check for terms. t checkSyntacticEquality v v' = do (v,v') <- instantiateFull (v,v') return ((v,v'), v==v')  only that v,v'B are only fully instantiated to the depth where they are equal.4rAgdaReturn, flagging inequalty.4sAgda0If inequality is flagged, return, else continue.()Agda!Syntactic equality ignores sorts.(.Agda Syntactic term equality ignores  stuff.(!("(!("None"#$&',.14568=>?@ACEPSX_`3(0Agda:Convert a term (from a dot pattern) to a DeBruijn pattern.(0(1(2(0(1(2None"#$,.14568=>?@ACEPSX_`I(AAgdaGet the # as a y.(DAgda-Raises an error if no level kit is available.(EAgda,Checks whether level kit is fully available.(7(8(@(?(>(=(<(;(:(9(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(7(8(@(?(>(=(<(;(:(9(A(B(C(D(E(F(G(H(I(J(K(L(M(N(ONone"#$,.14568=>?@ACEPSX_`(QAgda!A variable can either not occur ((S) or it does occur ((Rl). In the latter case, the occurrence may disappear depending on the instantiation of some set of metas.(TAgdaTry to enforce a set of variables not occurring in a given type. Returns a possibly reduced version of the type and for each of the given variables whether it is either not free, or maybe free depending on some metavariables.(P(Q(R(S(T(P(T(Q(R(SNone"#$,.14568=>?@ACEPSX_`(eAgdaaSubstitute terms with origin into display terms, replacing variables along with their origins.The purpose is to replace the pattern variables in a with-display form, and only on the top level of the lhs. Thus, we are happy to fall back to ordinary substitution where it does not matter. This fixes issue #2590.(gAgdaClass Match for matching a term p, in the role of a pattern against a term v.The 0th variable in pP plays the role of a place holder (pattern variable). Each occurrence of var 0 in p) stands for a different pattern variable.sThe result of matching, if successful, is a list of solutions for the pattern variables, in left-to-right order.*The 0th variable is in scope in the input vC, but should not actually occur! In the output solution, the 0tha variable is no longer in scope. (It has been substituted by (throwImpossible (Impossible "srcfullAgda TypeChecking=DisplayForm.hs" 126)) which corresponds to a raise by -1).(iAgda Convert a  into a .(jAgda0Get the arities of all display forms for a name.(kAgda!Find a matching display form for q es&. In essence this tries to rewrite q es with any display form  q ps --> dt! and returns the instantiated dt" if successful. First match wins.(lAgdaMatch a  q ps = v against q es. Return the  v[us]' if the match was successful, i.e., es / ps = Just us.(e(f(g(h(i(j(k(l(i(j(k(l(g(h(e(fNone"#$,.14568=>?@ACEPSX_`4tAgda=A graph is cyclic if it has any strongly connected component.4uAgdarecDef names name returns all definitions from names* that are used in the type and body of name.(AgdaanysDef names a returns all definitions from names that are used in a.((((None"#$,.14568=>?@ACEPSX_`|(Agda Check that   "  : .((((None"#$,.14568=>?@ACEPSX_`(AgdaELine reader. The line reader history is not stored between sessions.((None"#$,.14568=>?@ACEPSX_`((((((((((((((((None"#$,.14568=>?@ACEPSX_`((((None"#$,.14568=>?@ACEPSX_`((None"#$,.14568=>?@ACEPSX_`((None"#$,.14568=>?@ACEPSX_`((None"#$,.14568=>?@ACEPSX_`(Agda$Insert unsafeCoerce (in the form of  QC) everywhere it's needed in the right-hand side of a definition.((None"#$,.14568=>?@ACEPSX_`M(AgdaCalls a compiler:Checks the exit code to see if the compiler exits successfully. If not, then an exception is raised, containing the text the compiler printed to stderr (if any).eUses the debug printout machinery to relay any progress information the compiler prints to stdout.(AgdaGeneralisation of  callCompiler) where the raised exception is returned.(Agda$Should we actually call the compilerAgdaThe path to the compilerAgdaCommand-line arguments.(AgdaThe path to the compilerAgdaCommand-line arguments.((((None"#$,.14568=>?@ACEPSX_`I(AgdauRun before serialisation to remove any definitions that are not reachable from the public interface to the module.((None"#$,.14568=>?@ACEPSX_`һ(Agda.Adds a new unique name to the current context.(Agda@Returns the name of the variable with the given de Bruijn index.(Agda^Translate reflected syntax to abstract, using the names from the current typechecking context.(Agda5Drop implicit arguments unless --show-implicit is on. ((((((((((( (((((((((((None"#$,.14568=>?@ACEPSX_`g(AgdaAWe put the translation into TCM in order to print debug messages.4vAgdaAbstract names currently in scope. Unlike the ScopeInfo, this includes names for hidden arguments inserted by the system.4wAgda*Concrete names of all definitions in scope4xAgdaCertain builtins (like fromNat) have special printing4yAgdaPreserve interaction point ids4zAgdaCBind a concrete name to an abstract in the translation environment.4{AgdaJGet a function to check if a name refers to a particular builtin function.4|Agda|Names in abstract syntax are fully qualified, but the concrete syntax requires non-qualified names in places. In theory (if all scopes are correct), we should get a non-qualified name when translating back to a concrete name, but I suspect the scope isn't always perfect. In these cases we just throw away the qualified part. It's just for pretty printing anyway...4}Agda]Is this concrete name currently in use by a particular abstract name in the current scope?4~AgdauHave we already committed to a specific concrete name for this abstract name? If yes, return the concrete name(s).4AgdawCommit to a specific concrete name for printing the given abstract name. If the abstract name already has associated4AgdaBFor the given abstract name, return the names that could shadow it: 1. first set: names for which we have already picked a concrete name (so we should definitely avoid these names) 2. second set: flexible names that we would like to keep free if possible (we can try to avoid them, but it's not required)4Agda8Choose a new unshadowed name for the given abstract name4AgdaQAdd a abstract name to the scope and produce an available concrete version of it.4AgdaLike 40, but do not care whether name is already taken.4AgdaGeneral bracketing function.4AgdaExpression bracketing4AgdaPattern bracketing4AgdarApplications where the argument is a lambda without parentheses need parens more often than other applications.4Agda|If a name is defined with a fixity that differs from the default, we have to generate a fixity declaration for that name.4AgdaAdd abstract, private, instance modifiers.(Agda9Translate something in a context of the given precedence.4Agda9Translate something in a context of the given precedence.4Agda'Translate something in the top context.4Agda'Translate something in the top context.4Agda.Translate something in a context indicated by  info.4Agda.Translate something in a context indicated by  info.4Agda)Recover pattern synonyms for expressions.4Agda%Recover pattern synonyms in patterns.4AgdaCGeneral pattern synonym recovery parameterised over expression type(AgdaAssumes name is not .4Agdathe bracketing functionAgda?Should we bracket things which have the given precedence?4AgdaCheck for lambdas((((((((((((((((((((((((((((((((None"#$,.14568=>?@ACEPSX_`(Agda Variant of (- which does not insert outermost parentheses.(Agda Variant of (- which does not insert outermost parentheses.((((((((((None "#$,.14568=>?@ACEHMPSVX\_`"4Agda0Collect the binders in some abstract syntax lhs.4Agda blank bound e& replaces all variables in expression e that are not in bound by an underscore _. It is used for printing dot patterns: we don't want to make implicit variables explicit, so we blank them out in the dot patterns instead (this is fine since dot patterns can be inferred anyway).(AgdaJAlso tracks whether module parameters should be dropped from the patterns.4Agda.Drops hidden arguments unless --show-implicit.4Agda.Drops hidden arguments unless --show-implicit.4Agda.Drops hidden arguments unless --show-implicit.4Agda_If we are referencing the record from inside the record definition, we don't insert an | A.App4Agda.Drops hidden arguments unless --show-implicit.4AgdareifyDisplayForm f vs fallback tries to rewrite f vs with a display form for fK. If successful, reifies the resulting display term, otherwise, does fallback.4AgdareifyDisplayFormP; tries to recursively rewrite a lhs with a display form.=Note: we are not necessarily in the empty context upon entry!4Agda -nameFirstIfHidden (x:a) ({e} es) = {x = e} es4AgdaRemoves implicit arguments that are not needed, that is, that don't bind any variables that are actually used and doesn't do pattern matching. Doesn't strip any arguments that were written explicitly by the user.(AgdatAssumes that pattern variables have been added to the context already. Picks pattern variable names from context.4AgdaIf the record constructor is generated or the user wrote a record pattern, turn constructor pattern into record pattern. Otherwise, keep constructor pattern.) AgdaBSkip reification of implicit and irrelevant args if option is off.4AgdaLHS head symbolAgda7Patterns to be taken into account to find display form.Agda.Remaining trailing patterns ("with patterns").Agda!New head symbol and new patterns.((((((((((((None"#$,.14568=>?@ACEPSX_`')4Agda2Pairing something with a node (for printing only).)LAgda!Comma-separated list in brackets.)MAgda)L without the brackets.)OAgda,Pretty print with a given context precedence)PAgda#Proper pretty printing of patterns:(!L!M!N!O!P!Q!R!S!T!U)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q()8)9):);)<)=)>!U)?)@)A!Q!R!S)B!T)C!N)D!O!P)E)F)G)H)I)J)K)L)M)N!L!M)O)6)7)P)Q)4)5!N5!O6!P6)D5)E6None"#$,.14568=>?@ACEPSX_`.a)AgdaIn an ambient context , telePiPath f  t bs builds a type that can be telViewPathBoundaryP'ed into (TelV  t, bs'). . " t bs = [(i,u_i)]  = 0,(i : I),1 " b " {0,1}. .0 | u_i .b : (telePiPath f 1 t bs)(i = b)  " telePiPath f  t bs))))None"#$,.14568=>?@ACEPSX\_``1)AgdaSize constraints we can solve.)Agda Leq a +n b represents  a =< b + n.  Leq a -n b represents  a + n =< b.)AgdaAtomic size expressions.)Agda)A size meta applied to de Bruijn indices.)AgdaA de Bruijn index.)AgdaJCheck whether a type is either not a SIZELT or a SIZELT that is non-empty.)Agda;Precondition: Term is reduced and not blocked. Throws a  if undecided)Agda-Checks that a size variable is ensured to be > 0. E.g. variable i cannot be zero in context 9(i : Size) (j : Size< ! ! i) (k : Size< j) (k' : Size< k). Throws a  if undecided.)AgdaOCheck whether a variable in the context is bounded by a size expression. If  x : Size< a, then a is returned.)AgdaXWhenever we create a bounded size meta, add a constraint expressing the bound. In boundedSizeMetaHook v tel a, tel includes the current context.)Agda#trySizeUniv cmp t m n x els1 y els28 is called as a last resort when conversion checking m cmp n : t failed for definitions  m = x els1 and  n = y els2, where the heads x and y are not equal. trySizeUniv9 accounts for subtyping between SIZELT and SIZE, like Size< i =< Size.>If it does not succeed it reports failure of conversion check.)AgdaOCompute the deep size view of a term. Precondition: sized types are enabled.)AgdaCompare two sizes.)AgdaCompare two sizes in max view.)AgdacompareBelowMax u vs checks  u <= max vs. Precondition:  size vs >= 2)AgdaIf y then postpone as constraint, otherwise, fail hard. Failing is required if we speculatively test several alternatives.)Agda3Checked whether a size constraint is trivial (like X <= X+1).)Agda9Test whether a problem consists only of size constraints.)Agda(Test is a constraint speaks about sizes.)Agda(Take out all size constraints (DANGER!).)AgdaFind the size constraints.)Agda.Return a list of size metas and their context.)AgdaCompute a set of size constraints that all live in the same context from constraints over terms of type size that may live in different contexts.cf. o)Agda@Turn a constraint over de Bruijn indices into a size constraint.)AgdaFTurn a term with de Bruijn indices into a size expression with offset. Throws a , if the term isn't a proper size expression.)AgdaUCompute list of size metavariables with their arguments appearing in a constraint.)AgdaKConvert size constraint into form where each meta is applied to indices  0,1,..,n-1 where n is the arity of that meta. X[] <= t becomes X[id] <= t[^-1] X[] "d Y[] becomes X[id] "d Y[[^-1]] or X[[^1]] "d Y[id]: whichever is defined. If none is defined, we give up.)AgdaAMain function. Uses the old solver for size constraints using Agda.Utils.Warshall6. This solver does not smartly use size hypotheses  j : Size< i<. It only checks that its computed solution is compatible)Agda&Old solver for size constraints using Agda.Utils.Warshall6. This solver does not smartly use size hypotheses  j : Size< i.)AgdaSize metas and their arity.Agda(Size constraints (in preprocessed form).AgdaReturns False if solver fails.))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))None"#$,.14568=>?@ACEPSX_`}-)AgdaWState worked on during the main loop of checking a lhs. [Ulf Norell's PhD, page. 35])Agda#The types of the pattern variables.)AgdaPatterns after splitting. The de Bruijn indices refer to positions in the list of abstract syntax patterns in the problem, counted from the back (right-to-left).)AgdaUser patterns of supposed type delta.)AgdaType eliminated by ) in the problem. Can be x to indicate that we came by an irrelevant projection and, hence, the rhs must be type-checked in irrelevant mode.)Agda%have we splitted with a PartialFocus?)Agda,The user patterns we still have to split on.)AgdaUser patterns.)AgdaCList of user patterns which could not yet be typed. Example:  f : (b : Bool) -> if b then Nat else Nat -> Nat f true = zero f false zero = zero f false (suc n) = n G In this sitation, for clause 2, we construct an initial problem G problemEqs = [false = b] problemRestPats = [zero]  As we instantiate b to false, the  targetType reduces to  Nat -> Nat and we can move pattern zero over to  problemEqs.)AgdaFlexible variables are equipped with information where they come from, in order to make a choice which one to assign when two flexibles are unified.)AgdaWhen we encounter a flexible variable in the unifier, where did it come from? The alternatives are ordered such that we will assign the higher one first, i.e., first we try to assign a DotFlex , then...)AgdaFrom a record pattern (6). Saves the ) of its subpatterns.)Agda-From a hidden formal argument or underscore (WildP).)AgdaFrom a dot pattern (5).)Agda*From a non-record constructor or literal (6 or 7).4)))))))))))))))))))))))))))))))))))))))))))))))4)))))))))))))))))))))))))))))))))))))))))))))))None"#$,.14568=>?@ACEPSX_`**None"#$,.14568=>?@ACEPSX_`*** * * * *** ************* * * * *** **********None"#$,.14568=>?@ACEPSX_`m*AgdaHCheck whether something can be used in a position of the given modality.jThis is a substitute for double-checking that only makes sure modalities are correct. See issue #2640.Used in unifier ( unifyStep Solution{}).This uses McBride-style modality checking. It does not differ from Pfenning-style if we are only interested in the modality of the free variables, used meta-variables, and used definitions.*AgdaICheck whether something can be used in a position of the given relevance.jThis is a substitute for double-checking that only makes sure relevances are correct. See issue #2640.Used in unifier ( unifyStep Solution{}).=At the moment, this implements McBride-style irrelevance, where Pfenning-style would be the most accurate thing. However, these two notions only differ how they handle bound variables in a term. Here, we are only concerned in the free variables, used meta-variables, and used (irrelevant) definitions.*AgdaZPrepare parts of a parameter telescope for abstraction in constructors and projections.*AgdasModify the context whenever going from the l.h.s. (term side) of the typing judgement to the r.h.s. (type side).*AgdaTInternal workhorse, expects value of --experimental-irrelevance flag as argument.*Agda(Conditionally) wake up irrelevant variables and make them relevant. For instance, in an irrelevant function argument otherwise irrelevant variables may be used, so they are awoken before type checking the argument.-Also allow the use of irrelevant definitions.* Agda(Conditionally) wake up irrelevant variables and make them relevant. For instance, in an irrelevant function argument otherwise irrelevant variables may be used, so they are awoken before type checking the argument.Precondition: Relevance /= Relevant*!AgdaApply relevance relv the the relevance annotation of the (typing/equality) judgement. This is part of the work done when going into a rel -context.Precondition: Relevance /= Relevant*"AgdaLike * , but only act on context if --irrelevant-projections. See issue #2170.*#Agda(Conditionally) wake up erased variables and make them unrestricted. For instance, in an erased function argument otherwise erased variables may be used, so they are awoken before type checking the argument.)Also allow the use of erased definitions.*$Agda(Conditionally) wake up erased variables and make them unrestricted. For instance, in an erased function argument otherwise erased variables may be used, so they are awoken before type checking the argument.Precondition: Quantity /= Quantity1*%AgdaApply quantity qu the the quantity annotation of the (typing/equality) judgement. This is part of the work done when going into a q -context.Precondition: Quantity /= Quantity1*&Agda(Conditionally) wake up irrelevant variables and make them relevant. For instance, in an irrelevant function argument otherwise irrelevant variables may be used, so they are awoken before type checking the argument.-Also allow the use of irrelevant definitions.*'Agda(Conditionally) wake up irrelevant variables and make them relevant. For instance, in an irrelevant function argument otherwise irrelevant variables may be used, so they are awoken before type checking the argument.Precondition: Modality /= Relevant*(AgdaApply modality mu the the modality annotation of the (typing/equality) judgement. This is part of the work done when going into a m -context.Precondition: Modality /= Relevant*)AgdaLike *& , but only act on context if --irrelevant-projections. See issue #2170.**Agda Wake up irrelevant variables and make them relevant. This is used when type checking terms in a hole, in which case you want to be able to (for instance) infer the type of an irrelevant variable. In the course of type checking an irrelevant function argument *> is used instead, which also sets the context relevance to . This is not the right thing to do when type checking interactively in a hole since it also marks all metas created during type checking as irrelevant (issue #2568).*+Agda,Is a type a proposition? (Needs reduction.)********* *!*"*#*$*%*&*'*(*)***+*,***** *!*"*#*$*%*&*'*(*)*******+*,None"#$,.14568=>?@ACEPSX_`a*CAgdasInfer the sort of another sort. If we can compute the bigger sort straight away, return that. Otherwise, return  UnivSort sF and add a constraint to ensure we can compute the sort eventually.*FAgdaiInfer the sort of a pi type. If we can compute the sort straight away, return that. Otherwise, return  PiSort s1 s2F and add a constraint to ensure we can compute the sort eventually.*GAgdaAs  inferPiSort', but for a nondependent function type.*IAgda Non-dependent version of ptsRule*KAgda@Recursively check that an iterated function type constructed by telePi is well-sorted. *C*D*E*F*G*H*I*J*K *C*D*E*F*G*H*I*J*KNone"#$,.14568=>?@ACEPSX\_`**,&AgdaTCheck if a name refers to a record constructor. If yes, return record definition.&AgdaKCheck if a constructor name is the internally generated record constructor.%Works also for abstract constructors.&Agda,The fields should be eta contracted already."We can eta contract if all fields f = ...! are irrelevant or all fields f are the projection f v of the same value v?, but we need at least one relevant field to find the value v.&Agda Get the field names of a record.&Agda3Check if a name refers to an eta expandable record.&AgdaHCheck if a name refers to a record. If yes, return record definition.*LAgda8Replace projection patterns by the original projections.*NAgdaTyping of an elimination.*OAgdaType of the argument.*QAgda+The type of the record which is eliminated.*RAgdaThe type of the field.*TAgdaYOrder the fields of a record construction. Use the second argument for missing fields.*UAgdaA record field assignment record{xs = es}+ might not mention all visible fields. insertMissingFields inserts placeholders for the missing visible fields and returns the values in order of the fields in the record declaration.*VAgda1The name of the module corresponding to a record.*WAgdayGet the definition for a record. Throws an exception if the name does not refer to a record or the record is abstract.*XAgda.Get the record name belonging to a field name.*ZAgda0Find all records with at least the given fields.*[Agda Get the field types of a record.*\Agda/Get the field names belonging to a record type.*]AgdaHReturns the given record type's constructor name (with an empty range).*^AgdaReduce a type and check whether it is a record type. Succeeds only if type is not blocked by a meta var. If yes, return its name, parameters, and definition.*_AgdaReduce a type and check whether it is a record type. Succeeds only if type is not blocked by a meta var. If yes, return its name, parameters, and definition. If no, return the reduced type (unless it is blocked).*`Agda*Get the original projection info for name.*aAgdagetDefType f t? computes the type of (possibly projection-(like)) function f whose first argument has type t . The  parameters for f are extracted from t. Nothing if f is projection(like) but t is not a datarecord axiom type.Precondition: t is reduced. See also: p*bAgdaThe analogue of ". If v is a value of record type t with field f, then projectTyped v t f returns the type of f v0. And also the record type (as first result).+Works also for projection-like definitions f9. In this case, the first result is not a record type.Precondition: t is reduced.*cAgdaAGiven a head and its type, compute the types of the eliminations.*eAgdadCheck if a name refers to a record which is not coinductive. (Projections are then size-preserving)*fAgda`Check if a type is an eta expandable record and return the record identifier and the parameters.*gAgdaYTurn off eta for unguarded recursive records. Projections do not preserve guardedness.*hAgda`Turn on eta for inductive guarded recursive records. Projections do not preserve guardedness.*iAgdaETurn on eta for non-recursive record, unless user declared otherwise.*jAgda1Check whether record type is marked as recursive.9Precondition: record type identifier exists in signature.*kAgda etaExpandBoundVar i = (, , )%Precondition: The current context is  =  , x:R pars,   where | | = i and R4 is a eta-expandable record type with constructor c and fields '.Postcondition:  =  , ',  [c '] and   "  :  and   "  : .*lAgda #expandRecordVar i  = (, , , ')Precondition:  =  , x:R pars,   where | | = i and R7 is a eta-expandable record type with constructor c and fields '.Postcondition:  =  , ',  [c '] and   "  :  and   "  : .*mAgdaCPrecondition: variable list is ordered descendingly. Can be empty.*nAgda curryAt v ( (y : R pars) -> B) n = ( v ->   ys ! v  (c ys) {- curry -} , v ->   y ! v  (p1 y) ... (pm y) {- uncurry -} ,  (ys : As) ! B[c ys / y] )where  n = size .*oAgdaetaExpand r pars u, computes the eta expansion of record value u at record type r pars.The first argument r? should be the name of an eta-expandable record type. Given /record R : Set where field x : A; y : B; .z : Cand r : R, /etaExpand R [] r = (tel, [R.x r, R.y r, R.z r])where tel8 is the record telescope instantiated at the parameters pars.*pAgdaDEta expand a record regardless of whether it's an eta-record or not.*uAgdaVIs the type a hereditarily singleton record type? May return a blocking metavariable.nPrecondition: The name should refer to a record type, and the arguments should be the parameters to the type.*wAgdaReturn the unique (closed) inhabitant if exists. In case of counting irrelevance in, the returned inhabitant contains dummy terms.*xAgda[Check whether a type has a unique inhabitant and return it. Can be blocked by a metavar.*yAgdahCheck whether a type has a unique inhabitant (irrelevant parts ignored). Can be blocked by a metavar.*{AgdaChecks whether the given term (of the given type) is beta-eta-equivalent to a variable. Returns just the de Bruijn-index of the variable if it is, or nothing otherwise.*|AgdaAuxiliary function.*UAgda*Name of record type (for error reporting).Agda=Function to generate a placeholder for missing visible field.Agda Given fields.AgdaAll record field names with .AgdaBGiven fields enriched by placeholders for missing explicit fields.*\Agda"Record type. Need not be reduced.*bAgdaHead (record value).Agda Its type.Agda Projection.7&&&&&&*L*M*N*P*O*R*Q*S*T*U*V*W*X*Y*Z*[*\*]*^*_*`*a*b*c*d*e*f*g*h*i*j*k*l*m*n*o*p*q*r*s*t*u*v*w*x*y*z*{*|7*S*T*U*V*W*X&*Y*Z*[*\*]&*^*_*`*a*b*N*P*O*R*Q*c&*d*e*f&&*g*h*i*j*k*l*m*n*o*p*q*r*s*t&*u*v*w*x*y*z*{*|*L*MNone"#$,.14568=>?@ACEPSX_`gL *AgdaPossible results of *.*AgdaESuccess: this many implicits have to be inserted (list can be empty).*AgdaJError: hidden argument where there should have been a non-hidden argument.*AgdaError: bad named argument.*AgdaimplicitArgs n expand t generates up to n+ implicit arguments metas (unbounded if n<0), as long as t is a function type and expand( holds on the hiding info of its domain.*AgdaimplicitNamedArgs n expand t generates up to n1 named implicit arguments metas (unbounded if n<0), as long as t is a function type and expand1 holds on the hiding and name info of its domain.*Agda'Create a metavariable according to the  info.*Agda'Create a questionmark according to the  info.*AgdaIf the next given argument is a and the expected arguments are ts insertImplicit' a ts returns the prefix of ts that precedes a.If a+ is named but this name does not appear in ts, the * exception is thrown.*AgdaIf the next given argument is a and the expected arguments are ts insertImplicit' a ts returns the prefix of ts that precedes a.If a+ is named but this name does not appear in ts, the * exception is thrown.*Agdan0, the maximum number of implicts to be inserted.Agdaexpand9, the predicate to test whether we should keep inserting.AgdaThe (function) type t we are eliminating.Agda1The eliminating arguments and the remaining type.*Agdan0, the maximum number of implicts to be inserted.Agdaexpand9, the predicate to test whether we should keep inserting.AgdaThe (function) type t we are eliminating.Agda1The eliminating arguments and the remaining type.*AgdaKind/relevance of meta.AgdaName suggestion for meta.Agda Type of meta.Agda#The created meta as id and as term.*AgdaKind/relevance of meta.AgdaName suggestion for meta.Agda Type of meta.Agda#The created meta as id and as term.*AgdaNext given argument a.AgdaExpected arguments ts.*AgdaNext given argument a.AgdaExpected arguments ts. *********** ***********None"#$,.14568=>?@ACEPSX_`R1*Agda;Insert implicit patterns in a list of patterns. Even if (, trailing SIZELT patterns are inserted.*Agda(Insert trailing SizeLt patterns, if any.*Agda;Insert implicit patterns in a list of patterns. Even if (, trailing SIZELT patterns are inserted.********None"#$,.14568=>?@ACEPSX_`j*AgdaIRename the variables in a telescope using the names from a given pattern.If there are not at least as many patterns as entries as in the telescope, the names of the remaining entries in the telescope are unchanged. If there are too many patterns, there should be a type error later.*Agda)Are there any untyped user patterns left?*AgdaConstruct an initial )% from user patterns. Example: @dCase : {A : Set} ! Maybe A ! Set ! Set ! Set Case nothing B C = B Case (just _) B C = Csample : {A : Set} (m : Maybe A) ! Case m Bool (Maybe A ! Bool) sample (just a) (just b) = true sample (just a) nothing = false sample nothing = true 2 The problem generated for the first clause of sample with patterns just a, just b would be: E lhsTel = [A : Set, m : Maybe A] lhsOutPat = [Ax, "m"] lhsProblem = Problem ["_", "just a"] [] [] [] lhsTarget = "Case m Bool (Maybe A -> Bool)" @*AgdaTry to move patterns from the problem rest into the problem. Possible if type of problem rest has been updated to a function type.*AgdaThe initial telescope delta of parameters.AgdaBThe problem equations inherited from the parent clause (living in delta).AgdaThe user patterns.Agda0The type the user patterns eliminate (living in delta).Agda8Continuation for when checking the patterns is complete.Agda9The initial LHS state constructed from the user patterns.**********None"#$,.14568=>?@ACEPSX_`o,*AgdakExpand a clause to the maximal arity, by inserting variable patterns and applying the body to variables.*AgdaMGet the name of defined symbol of the head normal form of a term. Returns 3 if no such head exists.****None"#$,.14568=>?@ACEHPSVX_`*Agda;Compute the pattern variables of a term or term-like thing.*AgdaGiven the type of a constructor (excluding the parameters), decide which arguments are forced. Precondition: the type is of the form  ! D vs and the vs are in normal form.*Agda9Move bindings for forced variables to unforced positions.*AgdanApplies the forcing translation in order to update modalities of forced arguments in the telescope. This is used before checking a right-hand side in order to make sure all uses of forced arguments agree with the relevance of the position where the variable will ultimately be bound. Precondition: the telescope types the bound variables of the patterns.*AgdacRebind a forced pattern in a non-forced position. The forced pattern has already been dotted by *, so the remaining task is to find a dot pattern in an unforced position that can be turned into a proper match of the forced pattern.<For instance (with patterns prettified to ease readability):FrebindForcedPattern [.(suc n), cons .n x xs] n = [suc n, cons .n x xs]*AgdaCheck if the first pattern rebinds the second pattern. Almost equality, but allows the first pattern to have a variable where the second pattern has a dot pattern. Used to fix #3544.*AgdaDot all forced patterns and return a list of patterns that need to be undotted elsewhere. Patterns that need to be undotted are those that bind variables or does some actual (non-eta) matching.*Agda(Assumes that the term is in normal form. ********** **********None"#$,.14568=>?@ACEPSX_`&AgdazGet the name of the datatype constructed by a given constructor. Precondition: The argument must refer to a constructor&Agda(Get true constructor with record fields.*AgdaArity.*AgdaList of field names.*AgdaTGet true constructor with fields, expanding literals to constructors if possible.*AgdasAugment constructor with record fields (preserve constructor name). The true constructor might only surface via reduce.*AgdaIs the datatype of this constructor a Higher Inductive Type? Precondition: The argument must refer to a constructor of a datatype or record.*AgdagetConType c t/ computes the constructor parameters from type t? and returns them plus the instantiated type of constructor c. This works also if tI is a function type ending in a data/record type; the term from which c comes need not be fully appliedNothing if t= is not a data/record type or does not have a constructor c.*AgdagetFullyAppliedConType c t7 computes the constructor parameters from data type t? and returns them plus the instantiated type of constructor c.Nothing if t= is not a data/record type or does not have a constructor c.Precondition: t is reduced.*AgdarReturn the number of non-parameter arguments to a data constructor, or the field names of a record constructor.*For getting just the arity of constructor c , use either id size  $ getConstructorArity c.*AgdaJCheck if a name refers to a datatype or a record with a named constructor.*Agda1Check if a name refers to a datatype or a record.*Agda Precodition:  is reduced.*Agda,Precondition: Name is a data or record type.*Agda3! if not data or record type name.*Agda3" if not data or record definition.*Agda,Precondition: Name is a data or record type.*Agda3! if not data or record type name.*Agda3" if not data or record definition.*Agda Constructor.AgdaEnding in data/record type.AgdaNothing$ if not ends in data or record type.Just ((d, dt, pars), ct) otherwise, where d* is the data or record type name, dt0 is the type of the data or record name, pars( are the reconstructed parameters, ctA is the type of the constructor instantiated to the parameters.*Agda Constructor.Agda.Reduced type of the fully applied constructor.AgdaNothing if not data or record type.Just ((d, dt, pars), ct) otherwise, where d* is the data or record type name, dt0 is the type of the data or record name, pars( are the reconstructed parameters, ctA is the type of the constructor instantiated to the parameters.&&*******************&**&*****************None"#$,.14568=>?@ACEPSX\_` *AgdaOMatch a non-linear pattern against a neutral term, returning a substitution.*AgdaMatching against a term produces a constraint which we have to verify after applying the substitution computed by matching.*Agda+Telescope of free variables in the equation*Agda-Term from pattern, living in pattern context.*AgdaBTerm from scrutinee, living in context where matching was invoked.*AgdaMonad for non-linear matching.*AgdaoTurn a term into a non-linear pattern, treating the free variables as pattern variables. The first argument indicates the relevance we are working under: if this is Irrelevant, then we construct a pattern that never fails to match. The second argument is the number of bound variables (from pattern lambdas). The third argument is the type of the term.*AgdaAdd substitution i |-> v to result of matching.*AgdaPUntyped -equality, does not handle things like empty record types. Returns 3 if the terms are equal, or `Just b` if the terms are not (where b contains information about possible metas blocking the comparison)*Agda3Are we currently matching in an irrelevant context?Agda"The telescope of pattern variablesAgda'The telescope of lambda-bound variablesAgdaThe type of the patternAgdaThe pattern to matchAgda*The term to be matched against the pattern******************************************************None"#$,.14568=>?@ACEMPSX_`4AgdaRecord pattern trees.4AgdaICorresponds to variable and dot patterns; contains the original pattern.4Agda RecCon t args/ stands for a record constructor application: tl is the type of the application, and the list contains a projection function and a tree for every argument.4Agda3 p6 means that a variable (corresponding to the pattern p7, a variable or dot pattern) should be kept unchanged. 3 (n, x, t) means that n 4 variables, and n 4E dot patterns, should be removed, and a new variable, with the name x5, inserted instead. The type of the new variable is t.4AgdaVarPat# stands for variable patterns, and DotPat for dot patterns.4Agda*A monad used to translate record patterns.The state records the number of variables produced so far, the reader records the total number of variables produced by the entire computation. Functions using this monad need to be sufficiently lazy in the reader component.4Agda dropFrom i n drops arguments j with  j < i + n and j >= i . NOTE: n7 can be negative, in which case arguments are inserted.4Agda4Split tree annotated for record pattern translation.4AgdaSplit tree annotation.4Agda)Constructor name/literal for this branch.4AgdaArity of the constructor.4Agda$Should we translate this split away?*AgdaTake a record pattern p_ and yield a list of projections corresponding to the pattern variables, from left to right. E.g. for  (x , (y , z)) we return [ fst, fst . snd, snd . snd ].%If it is not a record pattern, error  is raised.4Agda]Take a matrix of booleans (at least one row!) and summarize the columns using conjunction.4AgdainsertColumn i a m inserts a column before the ith column in matrix m and fills it with value a.4Agda#cutSublist i n xs = (xs', ys, xs'') cuts out a sublist ys of width n from xs, starting at column i.4AgdaTransform definitions returning record expressions to use copatterns instead. This prevents terms from blowing up when reduced.4AgdareplaceByProjections i projs cc replaces variables i..i+n-1' (counted from left) by projections projs_1 i .. projs_n i.If n==0, we matched on a zero-field record, which means that we are actually introduce a new variable, increasing split positions greater or equal to i' by one. Otherwise, we have to lower4AgdaRCheck if a split is on a record constructor, and return the projections if yes.4Agda+Bottom-up procedure to annotate split tree.*Agda;Bottom-up procedure to record-pattern-translate split tree.*AgdaReplaces pattern matching on record constructors with uses of projection functions. Does not remove record constructor patterns which have sub-patterns containing non-record constructor or literal patterns.4AgdaRuns a computation in the 4 monad.4Agda>Returns the next pattern variable, and the corresponding term.4Agda projections t9 returns a projection for every non-dot leaf pattern in tU. The term is the composition of the projection functions from the leaf to the root.KEvery term is tagged with its origin: a variable pattern or a dot pattern.4AgdagConverts a record tree to a single pattern along with information about the deleted pattern variables.4Agda*Removes record constructors from patterns.Returns the following things:The new pattern.A substitution which maps the old pattern variables (in the order they occurred in the pattern; not including dot patterns) to terms (either the new name of the variable, or a projection applied to a new pattern variable).GA list explaining the changes to the variables bound in the pattern.rRecord patterns containing non-record constructor patterns are not translated (though their sub-patterns may be).Example: The pattern !rec1 (con1 a) (rec2 b c) (rec3 d) should yield the pattern rec1 (con1 x) y z(, along with a substitution similar to $[x, proj2-1 y, proj2-2 y, proj3-1 z].=This function assumes that literals are never of record type.4Agda2Traverses a pattern and returns one of two things:>If there is no non-record constructor in the pattern, then 3 ps is returned, where psk contains one projection for every variable in the input pattern (in the order they are encountered)._Otherwise the output is a computation returning the same kind of result as that coming from 4x. (Computations are returned rather than values to ensure that variable numbers are allocated in the right order.)/Assumes that literals are never of record type.4AgdaTranslates the telescope.4AgdaiExplanation of how the telescope should be changed. Types should be in the context of the old telescope.Agda:Old telescope, flattened, in textual left-to-right order.Agda;New telescope, flattened, in textual left-to-right order. 33 is used to indicate the locations of dot patterns.********None"#$,.14568=>?@ACEPSX_`:.*Agda%Edge labels for the positivity graph.*Agda Monad for computing occurrences.+Agda"Context for computing occurrences.+Agda*Items corresponding to the free variables.=Potential invariant: It seems as if the list has the form genericReplicate n 3 ++ 3 (3 . +) is, for some n and is, where is! is decreasing (non-strictly).+AgdaName for " builtin.+AgdaUsed to build +  and occurrence graphs.+AgdaUsed to build +  and occurrence graphs.+ AgdaOnlyVarsUpTo n occs* discards occurrences of de Bruijn index >= n.+AgdahCheck that the datatypes in the mutual block containing the given declarations are strictly positive.UAlso add information about positivity and recursivity of records to the signature.+AgdaRemoves +  entries.+AgdaAn interpreter for +.=WARNING: There can be lots of sharing between the generated D entries. Traversing all of these entries could be expensive. (See + for an example.)+AgdaRunning the monad+Agda0Computes the number of occurrences of different +s in the given definition.2WARNING: There can be lots of sharing between the E entries. Traversing all of these entries could be expensive. (See + for an example.)+Agda1Computes the occurrences in the given definition.+Agda4Merges two edges between the same source and target.+Agda2WARNING: There can be lots of sharing between the R entries in the edges. Traversing all of these entries could be expensive. (See + for an example.)+AgdaComputes all non-&2 occurrence graph edges represented by the given +.2WARNING: There can be lots of sharing between the l entries in the edges. Traversing all of these entries could be expensive. For instance, for the function F in  benchmarkmiscSlowOccurrences.agda, a large number of edges from the argument X to the function F* are computed. These edges have polarity ,  or , and contain the following  elements: _ 4 (4 [ F,  0]), _ 4 (4 [ F,  0, ]), _ 4 (4 [ F,  0, , ]), _ 4 (4 [ F,  0, , , ]), and so on.+3AgdaFThese operations form a semiring if we quotient by the relation "the  components are equal".+Agda&The names in the current mutual block.AgdaThe current name.(********++++++++++ + + + + ++++++++++++++++++(+++++++ ++ + + + ++++++++++++*+++**++*****+++None"#$,.14568=>?@ACEPSX_`` !AgdaWhich DefOtypes are eligible for the principle argument of a projection-like function?!AgdaBTurn a definition into a projection if it looks like a projection.&Conditions for projection-likeness of f:  The type of f must be of the shape   ! D  ! C for D a name (Def ) which is !: data  record   postulate.iThe application of f should only get stuck if the principal argument is inferable (neutral). Thus:a. ff cannot have absurd clauses (which are stuck even if the principal argument is a constructor)b. fZ cannot be abstract as it does not reduce outside abstract blocks (always stuck).c. f= cannot match on other arguments than the principal argument.d. f cannot match deeply.e. f%s body may not mention the paramters.For internal reasons: f cannot be constructor headedfj cannot be recursive, since we have not implemented a function which goes through the bodies of the f^ and the mutually recursive functions and drops the parameters from all applications of f.$Examples for these reasons: see testSucceedNotProjectionLike.agda+=Agda View for a Def f (Apply a : es) where isProjection f. Used for projection-like fs.+>AgdaNA projection or projection-like function, applied to its principal argument+?AgdasJust a lone projection-like function, missing its principal argument (from which we could infer the parameters).+@Agda*Not a projection or projection-like thing.+DAgda Semantics of +=.+EAgda Top-level += (no reduction).+FAgdaReduce away top-level projection like functions. (Also reduces projections, but they should not be there, since Internal is in lambda- and projection-beta-normal form.)+GAgdaTurn prefix projection-like function application into postfix ones. This does just one layer, such that the top spine contains the projection-like functions as projections. Used in  compareElims in TypeChecking.Conversion and in Agda.TypeChecking.CheckInternal.If the 3 is 3{, a lone projection like function will be turned into a lambda-abstraction, expecting the principal argument. If the 3 is 3m , it will be returned unaltered.No precondition. Preserves constructorForm, since it really does only something on (applications of) projection-like functions. !!+=+@+?+>+C+B+A+D+E+F+G +=+@+?+>+C+B+A+D+E+F+G!!None"#$,.14568=>?@ACEPSX_`{!VAgda/What is the polarity of a function composition?!WAgdaMain function of this module.+HAgdapolarities i a4 computes the list of polarities of de Bruijn index i in syntactic entity a.+JAgda'Infimum on the information lattice. " is bottom (dominant for inf),  is top (neutral for inf).+KAgda* negation, swapping monotone and antitone.+MAgda#Get the next polarity from a list,  if empty.+NAgdaReplace  by &. (Arbitrary bias, but better than , see issue 1596).+OAgda6A quick transliterations of occurrences to polarities.+PAgda|Data and record parameters are used as phantom arguments all over the test suite (and possibly in user developments). enablePhantomTypes turns  parameters to  to enable phantoms.+QAgdaMake arguments  if the type of a not-K later argument depends on it. Also, enable phantom types by turning b into something else if it is a data/record parameter but not a size argument. [See issue 1596]SPrecondition: the "phantom" polarity list has the same length as the polarity list.+RAgdahCheck whether a variable is relevant in a type expression, ignoring domains of non-variant arguments.+SAgdaoHack for polarity of size indices. As a side effect, this sets the positivity of the size index. See testsucceed9PolaritySizeSucData.agda for a case where this is needed.+TAgdacheckSizeIndex d i a% checks that constructor target type a has form d ps (!  i) idxs where  |ps| = np(d).Precondition: a is reduced and of form  d ps idxs0.+UAgda polarity i a* computes the polarity of de Bruijn index i in syntactic entity a by taking the infimum of all +I.!V!W+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+J+K!V+L+M+N+O!W+P+Q+R+S+T+H+I+UNone"#$,.14568=>?@ACEPSX\_`&AgdaIf matching is inconclusive (DontKnowE) we want to know whether it is due to a particular meta variable.&AgdamatchCopatterns ps es matches spine es against copattern spine ps.Returns &e and a substitution for the pattern variables (in form of IntMap Term) if matching was successful.Returns &3 if there was a constructor or projection mismatch.Returns &b if an argument could not be evaluated to constructor form because of a blocking meta variable. In any case, also returns spine eso in reduced form (with all the weak head reductions performed that were necessary to come to a decision).&AgdaIBuilds a proper substitution from an IntMap produced by match(Co)patterns+bAgda Instead of zipWithMQ, we need to use this lazy version of combining pattern matching computations.+eAgdaMatch a single copattern.+fAgdaMatch a single pattern.&&&&&&&+a+b+c+d+e+f+g&&&&+a&+b+c+d&+e&+f+gNone"#$,.14568=>?@ACEPSX\_`:+kAgdathe kill list is empty or only Falses+lAgda0there is no possible kill (because of type dep.)+mAgda%managed to kill some args in the list+nAgda$all prescribed kills where performed+oAgdarCollect the *definitely* rigid variables in a monoid. We need to successively reduce the expression to do this.+qAgdaExtended occurs check.+tAgdaIDistinguish relevant, irrelevant and nonstrict variables in occurs check.+yAgdaWe are in arguments of a meta.+zAgda2We are not in arguments of a meta but a bound var.+{Agda9We are at the start or in the arguments of a constructor.+|Agda!We are in an irrelevant argument.+~AgdaXSet the names of definitions to be looked at to the defs in the current mutual block.+Agda,Is a def in the list of stuff to be checked?+Agda3Remove a def from the list of defs to be looked at.+Agda"Leave the strongly rigid position.+AgdaWhen assigning  m xs := v , check that m does not occur in v# and that the free variables of v are contained in xs.+Agdaprune m' vs xs' attempts to remove all arguments from vs. whose free variables are not contained in xs. If successful, m'= is solved by the new, pruned meta variable and we return True else False.'Issue 1147: If any of the meta args vs is matchable, e.g., is a constructor term, we cannot prune, because the offending variables could be removed by reduction for a suitable instantiation of the meta variable.+AgdahasBadRigid xs v = Just True# iff one of the rigid variables in v is not in xs. Actually we can only prune if a bad variable is in the head. See issue 458. Or in a non-eliminateable position (see succeed/PruningNonMillerPattern).hasBadRigid xs v = Nothing` means that we cannot prune at all as one of the meta args is matchable. (See issue 1147.)+AgdaCheck whether a term Def f esD is finally stuck. Currently, we give only a crude approximation.+AgdaCheck whether any of the variables (given as de Bruijn indices) occurs *definitely* in the term in a rigid position. Reduces the term successively to remove variables in dead subterms. This fixes issue 1386.+AgdakillArgs [k1,...,kn] X prunes argument i from metavar X if ki==TrueA. Pruning is carried out whenever > 0 arguments can be pruned.+Agda/killedType [((x1,a1),k1)..((xn,an),kn)] b = ([k'1..k'n],t') (ignoring Dom). Let t' = (xs:as) -> b. Invariant:  k'i == True iff  ki == True and pruning the ith argument from type b4 is possible without creating unbound variables. t' is type t after pruning all  k'i==True.+AgdadInstantiate a meta variable with a new one that only takes the arguments which are not pruneable.+Agda9Arguments to old meta var in left to right order with Bool' indicating whether they can be pruned.Agda$The old meta var to receive pruning.Agda$The pruned type of the new meta var.,+j+m+k+l+n+o+p+q+s+r+t+u+w+v+x+|+{+y+z+}+~+++++++++++++++++++++++,+}+~+++x+|+{+y+z+u+w+v+++++++t+++++++q+s+r++++++o+p+j+m+k+l+n++++None"#$,.14568=>?@ACEPSX_`+AgdaVariable blocking a match.+Agda/De Bruijn index of variable blocking the match.+AgdaConstructors in this position.+AgdaLiterals in this position.+AgdaGTrue if at least one clause has a variable pattern in this position.+AgdaBlocked on unsplit projection+Agda Blocked on unintroduced argument+AgdaFTrue if there are also matching clauses without an unsplit copattern.+Agda7True if the unintroduced argument was an IApply pattern+AgdaIf matching is inconclusive (BlockK) we want to know which variables or projections are blocking the match.+AgdaMatches unconditionally.+AgdaDefinitely does not match.+AgdaBlockedOnProj o! if the clause has a result split+AgdaBlockingVar i cs ls o means variable i is blocked on constructors cs and literals ls.4Agda|If matching succeeds, we return the instantiation of the clause pattern vector to obtain the split clause pattern vector.+AgdaFor each variable in the patterns of a split clause, we remember the de Bruijn-index and the literals excluded by previous matches.4AgdaGiven the function clauses cs the patterns psIwe want to compute a variable index of the split clause to split on next.First, we find the set cs': of all the clauses that are instances (via substitutions rhos) of the split clause.vIn these substitutions, we look for a column that has only constructor patterns. We try to split on this column first.+Agda2Match the given patterns against a list of clauses+Agda-A pattern that matches anything (modulo eta).4Agda Lens for +.4Agda Lens for +.4Agda%Left dominant merge of blocking vars.4AgdaLeft dominant merge of +.4Agda choice m m' combines the match results m of a function clause with the (already combined) match results $m'$ of the later clauses. It is for skipping clauses that definitely do not match (+)). It is left-strict, to be used with foldr,. If one clause unconditionally matches (+) we do not look further.4AgdamatchClause qs i c checks whether clause c( covers a split clause with patterns qs.4AgdamatchPats ps qs3 checks whether a function clause with patterns ps% covers a split clause with patterns qs.Issue 842 / 1986: This is accepted: D F : Bool -> Set1 F true = Set F = x -> Set / For the second clause, the split clause is F false, so there are more patterns in the split clause than in the considered clause. These additional patterns are simply dropped by zipWith. This will result in  mconcat [] which is Yes [].4Agda]Combine results of checking whether function clause patterns covers split clause patterns.+ is dominant: if one function clause pattern is disjoint to the corresponding split clause pattern, then the whole clauses are disjoint.+5 is neutral: for a match, all patterns have to match.+ accumulates variables of the split clause that have to be instantiated (an projection names of copattern matches) to make the split clause an instance of the function clause.4Agda matchPat p q* checks whether a function clause pattern p" covers a split clause pattern q. There are three results: Yes rs means it covers, because p is a variable pattern. rs4 collects the instantiations of the variables in p s.t.  p[rs] = q. No means it does not cover.  Block [x] means p is a proper instance of q and could become a cover if q was split on variable x. BlockLit [x] means p is a proper instance of q) and could become a cover if variable /x@ is instantiated with an appropriate literal.4AgdaSplit clause patterns qs.AgdaClause c to cover split clause.AgdaResult. If + the instantiation rs such that (namedClausePats c)[rs] == qs.4AgdaClause pattern vector ps( (to cover split clause pattern vector).AgdaSplit clause pattern vector qs* (to be covered by clause pattern vector).AgdaResult. If + the instantiation rs such that  ps[rs] == qs.4AgdaClause pattern p! (to cover split clause pattern).AgdaSplit clause pattern q# (to be covered by clause pattern).AgdaResult. If +, also the instantiation rsI of the clause pattern variables to produce the split clause pattern,  p[rs] = q.#+++++++++++++++++++++++++++++++++++#+++++++++++++++++++++++++++++++++++None"#$,.14568=>?@ACEPSX_`F"(AgdamatchCompiledE c es% takes a function given by case tree c and and a spine es$ and tries to apply the function to es.+AgdaA stack entry is a triple consisting of 1. the part of the case tree to continue matching, 2. the current argument vector, and 3. a patch function taking the current argument vector back to the original argument vector.+Agdamatch'- tries to solve the matching problems on the Stack?. In each iteration, the top problem is removed and handled.If the top problem was a Done , we succeed.If the top problem was a Case n and the nXth argument of the problem is not a constructor or literal, we are stuck, thus, fail.If we have a branch for the constructor/literal, we put it on the stack to continue. If we do not have a branch, we fall through to the next problem, which should be the corresponding catch-all branch.\An empty stack is an exception that can come only from an incomplete function definition."(")+++")"(+++None"#$,.14568=>?@ACEMPSX_`X-+Agda6The call information is stored as free monoid over j_. As long as we never look at it, only accumulate it, it does not matter whether we use Set, (nub) list, or TreeC. Internally, due to lazyness, it is anyway a binary tree of 3; nodes and singleton leafs. Since we define no order on j! (expensive), we cannot use a SetU or nub list. Performance-wise, I could not see a difference between Set and list.+Agda2True if thing not eligible for structural descent.+AgdaThing.+AgdaExtract variables from -;s that could witness a decrease via a SIZELT constraint.These variables must be under an inductive constructor (with no record constructor in the way), or after a coinductive projection (with no inductive one in the way).+AgdaTermination monad.+Agda Termination monad service class.+AgdaThe termination environment.+AgdaAAre we mining dot patterns to find evindence of structal descent?+AgdaDDo we inline with functions to enhance termination checking of with?+Agda#The name of size successor, if any.+Agda2The name of the delay constructor (sharp), if any.+Agda/Depth at which to cut off the structural order.+Agda3The name of the function we are currently checking.,AgdaThe names of the functions in the mutual block we are checking. This includes the internally generated functions (with, extendedlambda, coinduction).,AgdarThe list of name actually appearing in the file (abstract syntax). Excludes the internally generated functions.,AgdaSDoes the actual clause result from with-inlining? (If yes, it may be ill-typed.),Agda_Target type of the function we are currently termination checking. Only the constructors of , are considered guarding.,Agda%Are we checking a delayed definition?,AgdaOnly consider the ,= 3m< arguments for establishing termination. See issue #1023.,AgdaOnly consider guardedness if 3m (not masked).,Agda How many SIZELTy relations do we have in the context (= clause telescope). Used to approximate termination for metas in call args.,Agda+The patterns of the clause we are checking., AgdaNumber of additional binders we have gone under (and consequently need to raise the patterns to compare to terms). Updated during call graph extraction, hence strict., Agda~The current guardedness status. Changes as we go deeper into the term. Updated during call graph extraction, hence strict., AgdaWhen extracting usable size variables during construction of the call matrix, can we take the variable for use with SIZELT constraints from the context? Yes, if we are under an inductive constructor. No, if we are under a record constructor. (See issue #1015)., AgdaJPattern variables that can be compared to argument variables using SIZELT., AgdaThe current guardedness level.,Agda+The target of the function we are checking.,Agda!The mutual block we are checking.RThe functions are numbered according to their order of appearance in this list.,Agda!An empty termination environment.Values are set to a safe default meaning that with these initial values the termination checker will not miss termination errors it would have seen with better settings of these values.5Values that do not have a safe default are set to  IMPOSSIBLE.,Agda)Generic run method for termination monad.,AgdaCRun TerM computation in default environment (created from options).,.Agda Lens for ,.,/Agda Lens for , .,2Agda Lens for , .,5Agda9Compute usable vars from patterns and run subcomputation.,6AgdaSet ,  when going under constructor c.,7AgdaSet , $ for arguments following projection qx. We disregard j<i after a non-coinductive projection. However, the projection need not be recursive (Issue 1470).,8AgdaFor termination checking purposes flat should not be considered a projection. That is, it flat doesn't preserve either structural order or guardedness like other projections do. Andreas, 2012-06-09: the same applies to projections of recursive records.,9AgdaCheck whether a projection belongs to a coinductive record and is actually recursive. E.g. @ isCoinductiveProjection (Stream.head) = return False8isCoinductiveProjection (Stream.tail) = return True @,:Agda3How long is the path to the deepest atomic pattern?,;AgdaUA dummy pattern used to mask a pattern that cannot be used for structural descent.,>Agda#A very crude way of estimating the SIZELT chains  i > j > k: in context. Returns 3 in this case. Overapproximates.,?Agda*Print masked things in double parentheses.,HAgda*Only show intermediate nodes. (Drop last j).X+++++++++++++++++++, , , , ,,,,,,,,,++++++, ,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>X,,, ++, , , , ,,,,,,,,,++++++,+++++++,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;+++++++,<,=+++,>None"#$,.14568=>?@ACEPSX\_`k,bAgdaReturns 35 if no inlining happened, otherwise, the new clauses.4AgdaSReturns the original clause if no inlining happened, otherwise, the new clauses.4AgdawithExprClauses cl t asA generates a clause containing a fake call to with-expression a for each a in asF that is not a variable (and thus cannot contain a recursive call).Andreas, 2013-11-11: I guess "not a variable" could be generalized to "not containing a call to a mutually defined function".Note that the as) stem from the *unraised* clause body of cl and thus can be simply 3ped back there (under all the Bind abstractions).Precondition: we are %.4AgdainlinedClauses f cl t wf& inlines the clauses of with-function wf of type t into the clause cl!. The original function name is f.Precondition: we are %.4AgdaThe actual work horse. inline f pcl t wf wcl inlines with-clause wcl of with-function wf (of type t) into parent clause pcl (original function being f).,b,c,d,b,c,dNone"#$,.14568=>?@ACEPSX\_`t4AgdaIndefinite article.,gAgdaTurns all warnings into errors.,hAgdaEDepending which flags are set, one may happily ignore some warnings.4Agda?Drops given amount of leading components of the qualified name.,lAgda3Drops the filename component of the qualified name.4AgdaMProduces a function which drops the filename component of the qualified name.4AgdaPrint two terms that are supposedly unequal. If they print to the same identifier, add some explanation why they are different nevertheless. !!!,e,f,g,h,i,j,k,l !!,j,f,e,g,h,i,l,k!None"#$,.14568=>?@ACEMPSX_`v1,|,},~,,,,,,,,,,,,,,,,},~,,|,,,,,,,,,,,,,, None"#$,.14568=>?@ACEMPSX\_`,AgdabuildList A ts builds a list of type List A. Assumes that the terms ts all have type A.,AgdaConceptually: 2redBind m f k = either (return . Left . f) k =<< m,AgdamkPrimInjective takes two Set0 a and b and a function f of type a -> b5 and outputs a primitive internalizing the fact that f is injective.,Agda GprimEraseEquality : {a : Level} {A : Set a} {x y : A} -> x "a y -> x "a y,AgdaGet the + of the principal argument of BUILTIN REFL.Returns Nothing for e.g. P data Eq {a} {A : Set a} (x : A) : A ! Set a where refl : Eq x x Returns Just ... for e.g. V data Eq {a} {A : Set a} : (x y : A) ! Set a where refl : " x ! Eq x x ,AgdaUsed for both  primForce and primForceLemma.-AgdaAbbreviation: argN =  ).-AgdaAbbreviation: argH =   ).z,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------- - - - - ---------z,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------- - - - - ----,,,,-----,4,4,4-9 -9  None"#$,.14568=>?@ACEPSX\_`-YAgda Tries to  primTranspx a whole telescope of arguments, following the rule for  types. If a type in the telescope does not support transp,  transpTel throws it as an exception.-ZAgdaLike  transpTel but performing a transpFill.-Y-Z-Y-Z None"#$,.14568=>?@ACEPSX_`-[-[ None"#$,.14568=>?@ACEPSX_`g-_Agda'Takes the name of the data/record type.4AgdaDoesn't have any type information (other than the name of the data type), so we can't do better than checking if all constructors are present.4AgdazStrip unreachable clauses (replace by tUnreachable for the default). Fourth argument is the set of ints covered so far.-_-`-`-_ None"#$,.14568=>?@ACEPSX_`-c-d-e-f-g-h-g-c-d-e-f-hNone"#$,.14568=>?@ACEPSX_`-i-iNone"#$,.14568=>?@ACEPSX\_`4Agda*Compute a list of instance candidates. 3d if target type or any context type is a meta, error if type is not eligible for instance search.-jAgdafindInstance m (v,a)s& tries to instantiate on of the types as of the candidate terms vs to the type t of the metavariable m. If successful, meta m% is solved with the instantiation of v. If unsuccessful, the constraint is regenerated, with possibly reduced candidate set. The list of candidates is equal to Nothingz when the type of the meta wasn't known when the constraint was generated. In that case, try to find its type again.4AgdaResult says whether we need to add constraint, and if so, the set of remaining candidates and an eventual blocking metavariable.4Agda?Precondition: type is spine reduced and ends in a Def or a Var.4AgdaApply the computation to every argument in turn by reseting the state every time. Return the list of the arguments giving the result True.If the resulting list contains exactly one element, then the state is the same as the one obtained after running the corresponding computation. In all the other cases, the state is reset.Also returns the candidates that pass type checking but fails constraints, so that the error messages can be reported if there are no successful candidates.4Agda Given a meta m of type t and a list of candidates cands, checkCandidates m t candsY returns a refined list of valid candidates and candidates that failed some constraints.4AgdaTo preserve the invariant that a constructor is not applied to its parameter arguments, we explicitly check whether function term we are applying to arguments is a unapplied constructor. In this case we drop the first la arguments. See Issue670a. Andreas, 2013-11-07 Also do this for projections, see Issue670b.-j-k-l-m-j-k-l-mNone"#$,.14568=>?@ACEPSX\_`W"AgdaguardConstraint c blocker tries to solve blockerC first. If successful without constraints, it moves on to solve c, otherwise it adds a  Guarded c cs constraint to the blocker-generated constraints cs.""Agda=Don't allow the argument to produce any blocking constraints."#AgdatSolve awake constraints matching the predicate. If the second argument is True solve constraints even if already &w."&Agda7Catches pattern violation errors and adds a constraint.-oAgda,Create a fresh problem for the given action.-rAgdaUWake constraints matching the given predicate (and aren't instance constraints if -l).-sAgda4Wake up the constraints depending on the given meta.-tAgdaWake up all constraints.""" "!"""#"$"%"&"'-o-p-q-r-s-t-u-v-w"&"'""-o-p" "!"-q-r-s-t-u"$"#"%-v-w"None"#$&',.14568=>?@ACEPSX\_` -!Agda1Create a sort meta that may be instantiated with k (Set).!AgdaGCreate a new value meta with specific dependencies without -expanding.!AgdaXCreate a new value meta with specific dependencies, possibly -expanding in the process.!Agda?Create a new metavariable, possibly -expanding in the process.!AgdanewInstanceMeta s t candsC creates a new instance metavariable of type the output type of t with name suggestion s.!AgdaMiller pattern unification: assign x vs v solves problem x vs = v for meta x if vs1 are distinct variables (linearity check) and v9 depends only on these variables and does not contain x itself (occurs check).9This is the basic story, but we have added some features: Pruning.Benign cases of non-linearity.vs may contain record patterns.iFor a reference to some of these extensions, read Andreas Abel and Brigitte Pientka's TLCA 2011 paper.!AgdaAssign to an open metavar which may not be frozen. First check that metavar args are in pattern fragment. Then do extended occurs check on given thing.$Assignment is aborted by throwing a  PatternErr via a call to patternViolation. This error is caught by catchConstraint during equality checking ( compareAtom:) and leads to restoration of the original constraints.!Agda!Do safe eta-expansions for meta (SingletonRecords,Levels).!Agda(Performing the meta variable assignment.#The instantiation should not be an  and the b should point to something 1 or a +. Further, the meta variable may not be .-xAgda7Exceptions raised when substitution cannot be inverted.-yAgdaCannot recover.-zAgda=A potentially neutral arg: can't invert, but can try pruning.-{Agda&Try to eta-expand var to remove projs.-Agda?Normalize just far enough to be able to eta-contract maximally.-Agda6Check whether one of the meta args is a projected var.-AgdaVarious kinds of metavariables.-AgdaMeta variables of record type.-Agda7Meta variables of "hereditarily singleton" record type.-Agda;Meta variables of level type, if type-in-type is activated.-AgdaaFind position of a value in a list. Used to change metavar argument indices during assignment.reverse@ is necessary because we are directly abstracting over the list.-AgdaCCheck whether a meta variable is a place holder for a blocked term.-Agda8Skip frozen check. Used for eta expanding frozen metas.-Agda4Create a sort meta that cannot be instantiated with k (Set).-Agda1Create a sort meta that may be instantiated with k (Set).-Agda,Create a new value meta without -expanding.-Agda3Create a new value meta with specific dependencies.-AgdaZCreate a metavariable of record type. This is actually one metavariable for each field.-Agda6Construct a blocked constant if there are constraints.-AgdaunblockedTester t returns False if t is a meta or a blocked term.?Auxiliary function to create a postponed type checking problem.-Agda)Create a postponed type checking problem e : t that waits for type tA to unblock (become instantiated or its constraints resolved).-Agda)Create a postponed type checking problem e : t that waits for conditon unblockv. A new meta is created in the current context that has as instantiation the postponed type checking problem. An F@ constraint is added for this meta, which links to this meta.-Agda1Type of the term that is produced by solving the .-Agda7Eta expand metavariables listening on the current meta.-Agda/Wake up a meta listener and let it do its thing-Agda All possible metavariable kinds.-AgdavEta expand a metavariable, if it is of the specified kind. Don't do anything if the metavariable is a blocked term.-AgdaPEta expand blocking metavariables of record type, and reduce the blocked thing.-AgdaassignMeta m x t ids u solves  x ids = u for meta x of type t, where term u lives in a context of length m. Precondition: ids is linear.-AgdaassignMeta' m x t ids u solves  x = [ids]u for meta x of type t, where term u lives in a context of length m , and ids is a partial substitution.-AgdaTurn the assignment problem _X args <= SizeLt u into _X args = SizeLt (_Y args) and constraint  _Y args <= u.-Agda Eta-expand bound variables like z in  X (fst z).-AgdaJEta-expand a de Bruijn index of record type in context and passed term(s).-Agda_Turn non-det substitution into proper substitution, if possible. Otherwise, raise the error.-AgdaCheck that arguments args to a metavar are in pattern fragment. Assumes all arguments already in whnf and eta-reduced. Parameters are represented as Vars so  checkArgs$ really checks that all args are Var^s and returns the "substitution" to be applied to the rhs of the equation to solve. (If args8 is considered a substitution, its inverse is returned.)The returned list might not be ordered. Linearity, i.e., whether the substitution is deterministic, has to be checked separately.-Agda Turn open metas into postulates.Preconditions: We are %. is set to the top-level module.-}Agda)a possibly non-deterministic substitution-Agda"Should the meta be created frozen?AgdaName of record typeAgdaParameters of record type.-Agda dirAgdaThe meta variable x.AgdaIts associated information mvar <- lookupMeta x.Agda Its type  t = jMetaType $ mvJudgement mvarAgdaIts arguments.AgdaIts to-be-assigned value v , such that x args dir v.Agda0Continuation taking its possibly assigned value.-AgdaMeta variable arguments.AgdaRight hand side.F!!!!!!!!!!!!!-x-{-z-y-|-}-~--------------------------------------------------F---!--!---!-!!!---!!-!!---------------!-------!-!------------~-}--|-x-{-z-y--None"#$,.14568=>?@ACEPSX_`- -AgdaDo a full whnf and treat neutral terms as rigid. Used on the arguments to an injective functions and to the right-hand side.-AgdajDoes deBruijn variable i correspond to a top-level argument, and if so which one (index from the left).-AgdaJoin a list of inversion maps.-Agda%Update the heads of an inversion map.-AgdaIf a clause is over-applied we can't trust the head (Issue 2944). For instance, the clause might be `f ps = u , v` and the actual call `f vs .fst`. In this case the head will be the head of u rather than `_,_`.-AgdakTurn variable heads, referring to top-level argument positions, into proper heads. These might still be {, but in that case they refer to deBruijn variables. Checks that the instantiated heads are still rigid and distinct.-Agda,Argument should be in weak head normal form.-AgdaaPrecondition: The first argument must be blocked and the second must be neutral.-AgdarThe second argument should be a blocked application and the third argument the inverse of the applied function.------------------------------------None"#$,.14568=>?@ACEPSX_`r"bAgdahighlightAsTypeChecked rPre r m runs mG and returns its result. Additionally, some code may be highlighted:If r% is non-empty and not a sub-range of rPre (after  has been applied to both): r/ is highlighted as being type-checked while m0 is running (this highlighting is removed if m completes  successfully).'Otherwise: Highlighting is removed for rPre - r before m runs, and if m completes successfully, then rPre - r) is highlighted as being type-checked.4Agda<A function mapping names to the kind of name they stand for.-AgdaHighlighting levels.-AgdaXFull highlighting. Should only be used after typechecking has completed successfully.-AgdaBHighlighting without disambiguation of overloaded constructors.-Agda5Lispify and print the given highlighting information.-AgdawGenerate syntax highlighting information for the given declaration, and (if appropriate) print it. If the boolean is 3, then the state is additionally updated with the new highlighting info (in case of a conflict new info takes precedence over old info).CThe procedure makes use of some of the token highlighting info in U (that corresponding to the interval covered by the declaration). If the boolean is 3B, then this token highlighting info is additionally removed from .-AgdaZGenerate and return the syntax highlighting information for the tokens in the given file.-AgdaZGenerate and return the syntax highlighting information for the tokens in the given file.-AgdaGenerate and return the syntax highlighting information for the tokens in the given string, which is assumed to correspond to the given range.4Agda1Compute syntax highlighting for the given tokens.4Agda Builds a 4 function.4AgdaGenerates syntax highlighting information for all constructors occurring in patterns and expressions in the given declaration.This function should only be called after type checking. Constructors can be overloaded, and the overloading is resolved by the type checker.-Agda-Prints syntax highlighting info for an error.-AgdaRGenerate highlighting for error. Does something special for termination errors.-Agda*Generate syntax highlighting for warnings.4Agda4Generate syntax highlighting for termination errors.4AgdaNGenerate syntax highlighting for not-strictly-positive inductive definitions.-AgdasGenerates and prints syntax highlighting information for unsolved meta-variables and certain unsolved constraints.-AgdaGGenerates syntax highlighting information for unsolved meta variables.-Agda{Generates syntax highlighting information for unsolved constraints (ideally: that are not connected to a meta variable).4Agda8Generates a suitable file for a possibly ambiguous name.4AgdaConverts names to suitable s.4Agda A variant of 4 for qualified abstract names.-AgdafRemember a name disambiguation (during type checking). To be used later during syntax highlighting.-AgdaLStore a disambiguation of record field tags for the purpose of highlighting.-AgdaUpdate the state?-AgdaThe module to highlight.Agda)The file contents. Note that the file is not read from disk.4AgdaThis should only be -@ if type-checking completed successfully (without any errors).4Agda'Maps source file paths to module names.AgdaThe module to highlight.4Agda'Maps source file paths to module names.AgdaThe module to highlight.4Agda'Maps source file paths to module names.AgdaDThe file name of the current module. Used for consistency checking.Agda"The name qualifier (may be empty).AgdaThe base name.AgdaThe 0 of the name in its fixity declaration (if any).AgdaBMeta information to be associated with the name. The argument is 3 iff the name is an operator.AgdarThe definition site of the name. The calculated meta information is extended with this information, if possible.4Agda'Maps source file paths to module names.AgdaDThe file name of the current module. Used for consistency checking.Agda The name.Agda0Should the binding site be included in the file?AgdaDMeta information to be associated with the name. ^ The argument is 3 iff the name is an operator.-Agda*Record field names in a record expression.Agda>Record field names in the corresponding record type definition"b-----------------------------"b-----None"#$,.14568=>?@ACEPSX\_`j(|Agda.Check that the first sort equal to the second.(~Agda+equalTermOnFace  A u v = _ ,  " u = v : A(AgdacompareTel t1 t2 cmp tel1 tel1 checks whether pointwise tel1 `cmp` tel2 and complains that  t2 `cmp` t1 failed if not.(AgdaEquality on Types(AgdacompareElims pols a v els1 els2: performs type-directed equality on eliminator spines. t is the type of the head v.(Agda(Type-directed equality on argument lists(Agda)Syntax directed equality on atomic values(Agda!Type directed equality on values.-AgdaTry whether a computation runs without errors or new constraints (may create new metas, though). Restores state upon failure.-AgdanTry whether a computation runs without errors or new constraints (may create new metas, though). Return 3$ the result upon success. Return 3 and restore state upon failure.-AgdaqCheck if to lists of arguments are the same (and all variables). Precondition: the lists have the same length.-AgdaintersectVars us vs) checks whether all relevant elements in us and vs? are variables, and if yes, returns a prune list which says True8 for arguments which are different and can be pruned.-Agda$Ignore errors in irrelevant context.-Agda_Try to assign meta. If meta is projected, try to eta-expand and run conversion check again.-AgdaRaise  if there is no hope that by meta solving and subsequent eta-contraction these terms could become equal. Precondition: the terms are in reduced form (with no top-level pointer) and failed to be equal in the ( check.QBy eta-contraction, a lambda or a record constructor term can become anything.-AgdaCompute the head type of an elimination. For projection-like functions this requires inferring the type of the principal argument.-AgdaCheck whether a1 cmp a2% and continue in context extended by a1.-AgdaWhen comparing argument spines (in compareElims) where the first arguments don't match, we keep going, substituting the anti-unification of the two terms in the telescope. More precisely:@ (u = v : A)[pid] w = antiUnify pid A u v us = vs : [w/x] ------------------------------------------------------------- u us = v vs : (x : A)  @The simplest case of anti-unification is to return a fresh metavariable (created by blockTermOnProblem), but if there's shared structure between the two terms we can expose that.This is really a crutch that lets us get away with things that otherwise would require heterogenous conversion checking. See for instance issue #2384.-AgdaCompare two terms in irrelevant position. This always succeeds. However, we can dig for solutions of irrelevant metas in the terms we compare. (Certainly not the systematic solution, that'd be proof search...)-Agda coerce v a b coerces v : a to type b, returning a v' : b@ with maybe extra hidden applications or hidden abstractions.In principle, this function can host coercive subtyping, but currently it only tries to fix problems with hidden function types.Precondition: a and b are reduced.-AgdaAccount for situations like k : (Size< j) <= (Size< k + 1)Actually, the semantics is (Size<= k) ") (Size< j) " rhsJ which gives a disjunctive constraint. Mmmh, looks like stuff TODO."For now, we do a cheap heuristics. Precondition: types are reduced.-Agda9Check that the first sort is less or equal to the second. We can put SizeUniv below Inf;, but otherwise, it is unrelated to the other universes.-AgdaPrecondition: levels are '.d.-AgdaVleqInterval r q = r "d q in the I lattice. ("( r_i) "d ("( q_j) iff " i. " j. r_i "d q_j-AgdaleqConj r q = r "d q in the I lattice, when r and q are conjuctions. ' ("' r_i) "d ("' q_j) iff ' ("' r_i) "' ("' q_j) = ("' r_i) iff ' {r_i | i} "* {q_j | j} = {r_i | i} iff ' {q_j | j} " {r_i | i}-Agdacmp The comparison directionAgdaa1 The smaller domain.Agdaa2 The other domain.Agdab1 The smaller codomain.Agdab2 The bigger codomain.AgdaContinuation if mismatch in .AgdaContinuation if mismatch in .Agda)Continuation if comparison is successful.0(y(z({(|(}(~((((((((((--------------------------------0----(-(}-(---(---(-----(---(((z--((-(y({-(|------(~(--None"#$,.14568=>?@ACEPSX_`.Agda"Argument should be a term of type  Term ! TCM A3 for some A. Returns the resulting term of type A. The second argument is the term for the hole, which will typically be a metavariable. This is passed to the computation (quoted).!-.-........ .. . . . .................!. . . .. ..... .................-.-...None"#$,.14568=>?@ACEPSX\_`.8Agda'Size constraint with de Bruijn indices..;AgdaDeBruijn indices.<Agda Living in Context..=Agda Living in Context..?Agda'Size expression with de Bruijn indices..@AgdaSize metas in size expressions..CAgdaDe Bruijn indices..DAgda Identifiers for rigid variables..FAgda$Name for printing in debug messages..GAgdaDe Bruijn index..HAgda,Flag to control the behavior of size solver..IAgda2Instantiate all unconstrained size variables to "..JAgda,Leave unconstrained size variables unsolved..LAgda,Solve size constraints involving hypotheses..MAgda"TODO: this does not actually work!"We would like to use a constraint c created in context  from module N in the current context  and current module M. is module tel   of N! extended by some local bindings  . K is the current context. The module parameter substitution from current M to N be   "  :  .If M == N=, we do not need the parameter substitution. We try raising.We first strengthen  " c to live in   and obtain c = strengthen  c. We then transport c  to  and obtain c = applySubst  c .)This works for different modules, but if M == N we should not strengthen and then weaken, because strengthening is a partial operation. We should rather lift the substitution  by   and then raise by  -  0. This "raising" might be a strengthening if   is shorter than  .:(TODO: If the module substitution does not exist, because N is not a parent of MS, we cannot use the constraint, as it has been created in an unrelated context.).NAgda0A hazardous hack, may the Gods have mercy on us.STo cast to the current context, we match the context of the given constraint by CtxId,, and as fallback, by variable name (douh!).%This hack lets issue 2046 go through..OAgdaTReturn the size metas occurring in the simplified constraints. A constraint like ! _j =< " : Size simplifies to nothing, so _j would not be in this set..PAgda2Solve a cluster of constraints sharing some metas..QAgdaICollect constraints from a typing context, looking for SIZELT hypotheses..RAgdaKConvert size constraint into form where each meta is applied to indices  n-1,...,1,0 where n is the arity of that meta. X[] <= t becomes X[id] <= t[^-1] X[] "d Y[] becomes X[id] "d Y[[^-1]] or X[[^1]] "d Y[id]: whichever is defined. If none is defined, we give up.Cf. (SizedTypes.oldCanonicalizeSizeConstraint.Fixes (the rather artificial) issue 300. But it is unsound when pruned metas occur and triggers issue 1914. Thus we deactivate it. This needs to be properly implemented, possibly using the metaPermuatation of each meta variable..SAgda@Turn a constraint over de Bruijn indices into a size constraint..TAgda#Turn a term into a size expression.Returns 3, if the term isn't a proper size expression..UAgda&Turn a de size expression into a term..ZAgda Only for ..^Agda*An order which ignores the meta arguments.._Agda-An equality which ignores the meta arguments..`Agda$Assumes we are in the right context..8.9.<.;.:.=.>.?.@.A.C.B.D.E.F.G.H.J.I.K.L.M.N.O.P.Q.R.S.T.U.K.H.J.I.L.M.N.O.P.Q.R.D.E.F.G.@.A.C.B.?.>.8.9.<.;.:.=.S.T.UNone"#$,.124568=>?@ACEMPSX\_`W .jAgdaUnification succeeded..kAgdaTerms are not unifiable..lAgda1Some other error happened, unification got stuck..mAgda Result of .n..nAgdaUnify indices.In unifyIndices gamma flex us vs,us and vs! are the argument lists to unify,gamma' is the telescope of free variables in us and vs.flex3 is the set of flexible (instantiable) variabes in us and vs.*The result is the most general unifier of us and vs.4Agda4Get the type of the i'th variable in the given state4AgdaGet the k'th equality in the given state. The left- and right-hand sides of the equality live in the varTel telescope, and the type of the equality lives in the varTel++eqTel telescope4Agda*As getEquality, but with the unraised type4Agda>Add a list of equations to the front of the equation telescope4Agda[Instantiate the k'th variable with the given value. Returns Nothing if there is a cycle.4Agda{Solve the k'th equation with the given value, which can depend on regular variables but not on other equation variables.4AgdaSimplify the k'th equation with the given value (which can depend on other equation variables). Returns Nothing if there is a cycle.4Agda isHom n xA returns x lowered by n if the variables 0..n-1 don't occur in x.-This is naturally sensitive to normalization.4AgdaIndex kAgda Solution u.i.l.j.k.m.n.m.i.l.j.k.nNone"#$,.14568=>?@ACEPSX\_`.}Agda+addClause f (Clause {namedClausePats = ps}) checks that f ps$ reduces in a way that agrees with IApply reductions..|.}.|.}None"#$,.14568=>?@ACEPSX_`4"+Agda"/ traverses the whole 6, and we can use this traversal to modify the term.",AgdaResult is in reduced form."-AgdaInfer type of a neutral term."/AgdaEntry point for term checking."0AgdaCheck if sort is well-formed."1Agda Check a type and infer its sort.Necessary because of PTS rule (SizeUniv, Set i, Set i) but SizeUniv is not included in any Set i.This algorithm follows Abel, Coquand, Dybjer, MPC 08, Verifying a Semantic -Conversion Test for Martin-Lf Type Theory"2Agda/Entry point for e.g. checking WithFunctionType."4Agda(The default action is to not change the  at all..Agda/Called on each subterm before the checker runs..Agda/Called on each subterm after the type checking..AgdaCalled for each ArgInfo. The first / is from the type, the second from the term.4AgdaMake sure a constructor is fully applied and infer the type of the constructor. Raises a type error if the constructor does not belong to the given type.4AgdacheckArgInfo actual expected.The expected  comes from the type. The actual 8 comes from the term and can be updated by an action.4AgdacheckRelevance action term type.The term  can be updated by the action.4Agda$Infer ordinary function application.4Agda3Infer possibly projection-like function application4AgdainferSpine t self es checks that spine es eliminates value self of type t^ and returns the remaining type (target of elimination) and the final self (has that type).4AgdaReturns both the real term (first) and the transformed term (second). The transformed term is not necessarily a valid term, so it must not be used in types.4AgdarType should either be a record type of a type eligible for the principal argument of projection-like functions.4AgdaCheck if level is well-formed.4AgdaType of a term or sort meta.4AgdaDUniverse subsumption and type equality (subtyping for sizes, resp.)..AgdaCompute the sort of a type.4Agdaeliminate t self es eliminates value self of type t by spine es1 and returns the remaining value and its type.4Agda Constructor.AgdaConstructor arguments.Agda$Type of the constructor application.Agda Name of the data/record type, type of the data/record type, reconstructed parameters, type of the constructor (applied to parameters), full application arguments, types of missing arguments (already added to context), type of the full application.4AgdaType of the head self.Agda The head self.AgdaThe eliminations es.Agda!Expected type of the application self es.Agda*The application after modification by the Action.4AgdaType of the head.Agda The head.AgdaThe arguments.Agda!Expected type of the application.Agda*The application after modification by the Action."+.~...","-"."/"0"1"2"3"4."2"1"0"/"."+.~..."4"3"-.",None"#$,.14568=>?@ACEPSX_`5..........None"#$,.14568=>?@ACEPSX_`9.AgdaGEta-expand a term if its type is a function type or an eta-record type..AgdaKEta-expand functions and expressions of eta-record type wherever possible.......None"#$,.14568=>?@ACEPSX\_`J !HAgdarewrite b v rules es tries to rewrite v applied to es with the rewrite rules rules. b is the default blocking tag.!IAgda{Check that the name given to the BUILTIN REWRITE is actually a relation symbol. I.e., its type should be of the form  ! (lhs : A) (rhs : B) ! Set !A. Note: we do not care about hiding/non-hiding of lhs and rhs..Agda3Get all symbols that a rewrite rule matches against.AgdaDeconstructing a type into  ! t ! t' ! core..AgdaThe whole telescope , t, t'..Agda..Agdat..Agdat'..Agdacore..AgdaDeconstructing a type into  ! t ! t' ! core . Returns Nothing if not enough argument types..AgdaAdd q :  ! rel us lhs rhs as rewrite rule   " lhs ! rhs : B  to the signature where  B = A[us/]. Remember that rel :  ! A ! A ! Set i, so $rel us : (lhs rhs : A[us/]) ! Set i..Agda%Append rewrite rules to a definition..AgdarewriteWith t f es rew where f : t tries to rewrite f es with rew%, returning the reduct if successful.!H!I...................!I...........!H......None"#$,.14568=>?@ACEHPSVX_`gӎ;!KAgda)The entry point to the reduction machine.4Agda<Control frames are continuations that act on value closures.4Agda CaseK f i bs spine0 spine1 stack/. Pattern match on the focus (with arg info i ) using the bs case tree. f8 is the name of the function doing the matching, and spine0 and spine1 are the values bound to the pattern variables to the left and right (respectively) of the focus. The match stack contains catch-all cases we need to consider if this match fails.4Agda ArgK cl cxt. Used when computing full normal forms. The closure is the head and the context is the spine with the current focus removed.4AgdaAIndicates that the focus should be evaluated to full normal form.4AgdaForceK f spine0 spine1 . Evaluating  primForce of the focus. f is the name of  primForce> and is used to build the result if evaluation gets stuck. spine0& are the level and type arguments and spine1P contains (if not empty) the continuation and any additional eliminations.4Agda$EraseK f spine0 spine1 spine2 spine3 . Evaluating  primErase6. The first contains the level and type arguments. spine1 and spine25 contain at most one argument between them. If in spine1J it's the value closure of the first argument to be compared and if in spine2< it's the unevaluated closure of the second argument. spine3d contains the proof of equality we are erasing. It is passed around but never actually inspected.4Agda NatSucK n. Add nx to the focus. If the focus computes to a natural number literal this returns a new literal, otherwise it constructs n calls to suc.4AgdaPrimOpK f op lits es cc". Evaluate the primitive function f using the Haskell function op. opH gets a list of literal values in reverse order for the arguments of f] and computes the result as a term. The already computed arguments (in reverse order) are lits and es are the arguments that should be computed after the current focus. In case of built-in functions with corresponding Agda implementations, cc contains the case tree.4AgdaUpdateThunk ps. Update the pointers ps( with the value of the current focus.5Agda ApplyK spine1. Apply the current focus to the eliminations in spine_. This is used when a thunk needs to be updated with a partial application of a function.5Agda)A spine with a single hole for a pointer.5AgdaCatchAll cc spine. Case trees are not fully expanded, that is, inner matches can be partial and covered by a catch-all at a higher level. This catch-all is represented on the match stack as a CatchAll. cc, is the case tree in the catch-all case and spineH is the value of the pattern variables at the point of the catch-all.5AgdayThe control stack for matching. Contains a list of CatchAllFrame's and the closure to return in case of a stuck match.5AgdalThe control stack contains a list of continuations, i.e. what to do with the result of the current focus.5Agda*The abstract machine state has two states 5 and 5 that determine what the machine is currently working on: evaluating a closure in the Eval state and matching a spine against a case tree in the Match state. Both states contain a 5R of continuations for what to do next. The heap is maintained implicitly using 5 s, hence the s parameter.5AgdaHEvaluate the given closure (the focus) to weak-head normal form. If the 5  field of the closure is 5  we look at the control stack for what to do. Being strict in the control stack is important! We can spend a lot of steps with unevaluated closures (where we update, but don't look at the control stack). For instance, long chains of suc constructors.5AgdaMatch f cc spine stack ctrl Match the arguments spine against the case tree cc6. The match stack contains a (possibly empty) list of 5< frames and a closure to return in case of a stuck match.5 AgdaAThe environment of a closure binds pointers to deBruijn indicies.5 Agda3A thunk is either a black hole or contains a value.5 AgdaWSpines and environments contain pointers to closures to enable call-by-need evaluation.5Agda_Not a pointer. Used for closures that do not need to be shared to avoid unnecessary updates.5AgdaAn actual pointer is an 5 to a 5 . The thunk is set to 5I during the evaluation of its contents to make debugging loops easier.5AgdaOThe spine is a list of eliminations. Application eliminations contain pointers.5 AgdaUsed to track if a closure is  Unevaluated or a ValueG (in weak-head normal form), and if so why it cannot reduce further.5Agda?The abstract machine represents terms as closures containing a , an environment, and a spine of eliminations. Note that the environment doesn't necessarily bind all variables in the term. The variables in the context in which the abstract machine is started are free in closures. The 5 A argument tracks whether the closure is in weak-head normal form.5AgdaThe environment applies to the F argument. The spine contains closures with their own environments.5AgdaCase tree with bodies.5Agda Case n bs stands for a match on the n(-th argument (counting from zero) with bs as the case branches. If the n+-th argument is a projection, we have only { with arity 0.5AgdaxMatch on record constructor. Can still have a catch-all though. Just contains the fields, not the actual constructor.5Agda Done xs b stands for the body b where the xs contains hiding and name suggestions for the free variables. This is needed to build lambdas on the right hand side for partial applications which can still reduce.5Agda Absurd case.5Agda3We are constructing a record here (copatterns). { lists projections.5AgdaoMap from constructor (or projection) names to their arity and the case subtree. (Projections have arity 0.)5Agda!Map from literal to case subtree.5Agda'(Possibly additional) catch-all clause.5Agda?(if True) In case of non-canonical argument use catchAllBranch.5Agda primForce5Agda primErase5 Agda9Datatype or record type. Need to know this for primForce.5!AgdaAxiom or abstract defn5"Agda"Literals in reverse argument order5#Agda+In this case we fall back to slow reduction5$Agda Compute a 5% from a regular definition.5&AgdaQApply a closure to a spine of eliminations. Note that this does not preserve the 5  field.5'Agda+Apply a closure to a spine, preserving the 5 V field. Use with care, since usually eliminations do not preserve the value status.5(AgdaFIn most cases pointers that we dereference do not contain black holes.5)AgdaOnly use for debug printing!5*AgdaCreate a thunk. If the closure is a naked variable we can reuse the pointer from the environment to avoid creating long pointer chains.5+Agda-Create a thunk that is not shared or updated.5,AgdaUnsafe.5-AgdaThe initial abstract machine state. Wrap the term to be evaluated in an empty closure. Note that free variables of the term are treated as constants by the abstract machine. If computing full normal form we start off the control stack with a 4 continuation.5.AgdagThe abstract machine treats uninstantiated meta-variables as blocked, but the rest of Agda does not.5/AgdaYNote: it's important to be lazy in the spine and environment when decoding. Hence the 50 here and in 51, and the special version of , in 52.52AgdaUTurning an abstract machine closure back into a term. This happens in three cases: * when reduction is finished and we return the weak-head normal term to the outside world. * when the abstract machine encounters something it cannot handle and falls back to the slow reduction engine * when there are rewrite rules to apply53AgdasTurn a list of internal syntax eliminations into a spine. This builds closures and allocates thunks for all the  elims.54AgdafTrim unused entries from an environment. Currently only trims closed terms for performance reasons.55Agda Build an environment for a body with some given free variables from a spine of arguments. Returns a triple containing * the left-over variable names (in case of partial application) * the environment * the remaining spine (in case of over-application)56AgdaeEvaluating a term in the abstract machine. It gets the type checking state and environment in the 1 argument, some precomputed built-in mappings in 57, the memoised ! function, a couple of flags (allow non-terminating function unfolding, and whether rewriting is enabled), and a term to reduce. The result is the weak-head normal form of the term with an attached blocking tag.!J!K!K!J582592None"#$,.14568=>?@ACEPSX_`ڮ.Agda subst u . absTerm u == id.AgdaisPrefixOf u v = Just es if v == u  es..AgdaabstractType a v b[v] = b where a : v..Agda )piAbstractTerm v a b[v] = (w : a) -> b[w].Agda (piAbstract (v, a) b[v] = (w : a) -> b[w]For rewrite, it does something special: JpiAbstract (prf, Eq a v v') b[v,prf] = (w : a) (w' : Eq a w v') -> b[w,w'].Agda This swaps var 0 and var 1. .......... ..........None"#$,.14568=>?@ACEPSX_`w.Agda=Generalize a telescope over a set of generalizable variables..Agda?Generalize a type over a set of (used) generalizable variables..AgdaEAllow returning additional information from the type checking action.5:AgdaKCreate metas for the generalizable variables and run the type check action.5;AgdatAdd a placeholder variable that will be substituted with a record value packing up all the generalized variables.5<AgdaECompute the generalized telescope from metas created when checking the type/telescope to be generalized. Called in the context extended with the telescope record variable (whose type is the first argument). Returns the telescope of generalized variables and a substitution from this telescope to the current context.5=AgdaPrune unsolved metas (#3672). The input includes also the generalized metas and is sorted in dependency order. The telescope is the generalized telescope.5>AgdaCreate a substition from a context where the i first record fields are variables to a context where you have a single variable of the record type. Packs up the field variables in a record constructor and pads with  DUMMY_TERM-s for the missing fields. Important that you apply this to terms that only projects the defined fields from the record variable. Used with partial record values when building the telescope of generalized variables in which case we have done the dependency analysis that guarantees it is safe.5?AgdaTakes the list of types A [] A [r.f ] A [r.f , r.f ] ... And builds the telescope (x : A [ r := c _ .. _ ]) (x : A [ r := c x _ .. _ ]) (x : A [ r := c x x _ .. _ ]) ...5@AgdaICreate metas for all used generalizable variables and their dependencies.5AAgda9Create a generalisable meta for a generalisable variable.5BAgdaSort metas in dependency order.5CAgdaCreate a not-yet correct record type for the generalized telescope. It's not yet correct since we haven't computed the telescope yet, and we need the record type to do it.5DAgda]Once we have the generalized telescope we can fill in the missing details of the record type.......None"#$,.14568=>?@ACEPSX_`$6 .AgdaReturn the parameters that share variables with the indices nonLinearParameters :: Int -> Type -> TCM [Int] nonLinearParameters nPars t =.AgdaTType check a datatype definition. Assumes that the type has already been checked..AgdaQEnsure that the type is a sort. If it is not directly a sort, compare it to a -..AgdaType check a constructor declaration. Checks that the constructor targets the datatype and that it fits inside the declared sort. Returns the non-linear parameters..Agda&Bind the named generalized parameters..Agda"Bind the parameters of a datatype.NWe allow omission of hidden parameters at the definition site. Example: P data D {a} (A : Set a) : Set a data D A where c : A -> D A .AgdaCheck that the arguments to a constructor fits inside the sort of the datatype. The third argument is the type of the constructor.6As a side effect, return the arity of the constructor..AgdatWhen --without-K is enabled, we should check that the sorts of the index types fit into the sort of the datatype..AgdaCheck that a type constructs something of the given datatype. The first argument is the number of parameters to the datatype and the second the number of additional non-parameters in the context (1 when generalizing, 0 otherwise)..Agda!Is the type coinductive? Returns 3% if the answer cannot be determined..AgdaName of data type.AgdaCheck universes?AgdaParameter telescope.Agda#Number of indices of the data type.AgdaSort of the data type.Agda)Constructor declaration (type signature)..Agda%how to apply a "projection" to a termAgdasome name, e.g. record nameAgda param types Agdafields' types  " Agda fields' namesAgdarecord type  " T.AgdaPathCons, . " u : R Agda%how to apply a "projection" to a termAgdasome name, e.g. record nameAgda param types Agdafields' types  " Agda fields' namesAgdarecord type  " T.Agda%how to apply a "projection" to a termAgdasome name, e.g. record nameAgda param types Agdafields' types  " Agda fields' namesAgdarecord type ( : ) " R[].AgdaNumber of parametersAgdaBindings from definition site.Agda/Pi-type of bindings coming from signature site.AgdaContinuation, accepting parameter telescope and rest of type. The parameters are part of the context when the continutation is invoked.........................................None"#$,.14568=>?@ACEPSX\_`L%.Agda'Result of checking the LHS of a clause..AgdaQThe number of original module parameters. These are present in the the patterns..AgdaV : The types of the pattern variables, in internal dependency order. Corresponds to J..Agda The patterns in internal syntax..Agda0Whether the LHS has at least one absurd pattern..AgdaThe type of the body. Is b if  is defined. 8 to indicate the rhs must be checked in irrelevant mode..AgdaSubstitution version of  lhsPatterns,, only up to the first projection pattern.  |- lhsPatSubst : . Where u is the argument telescope of the function. This is used to update inherited dot patterns in with-function clauses..AgdaAs-bindings from the left-hand side. Return instead of bound since we want them in where's and right-hand sides, but not in with-clauses (Issue 2303)..Agdahave we done a partial split?.AgdaiA pattern is flexible if it is dotted or implicit, or a record pattern with only flexible subpatterns.5EAgda{Compute the set of flexible patterns in a list of patterns. The result is the deBruijn indices of the flexible patterns.5FAgdalUpdate the user patterns in the given problem, simplifying equations between constructors where possible.5GAgda`Check if a problem is solved. That is, if the patterns are all variables, and there is no  problemRest.5HAgdaHCheck if a problem consists only of variable patterns. (Includes the  problemRest).5IAgda.For each user-defined pattern variable in the ), check that the corresponding data type (if any) does not contain a constructor of the same name (which is not in scope); this "shadowing" could indicate an error, and is not allowed.+Precondition: The problem has to be solved.5JAgda4Check that a dot pattern matches it's instantiation.5KAgdaClassify remaining patterns after splitting is complete into pattern variables, as patterns, dot patterns, and absurd patterns. Precondition: there are no more constructor patterns.5LAgdaBuild a renaming for the internal patterns using variable names from the user patterns. If there are multiple user names for the same internal variable, the unused ones are returned as as-bindings.5MAgdaAfter splitting is complete, we transfer the origins We also transfer the locations of absurd patterns, since these haven't been introduced yet in the internal pattern.5NAgdaIf a user-written variable occurs more than once, it should be bound to the same internal variable (or term) in all positions. Returns the list of patterns with the duplicate user patterns removed.5OAgdabConstruct the context for a left hand side, making up out-of-scope names for unnamed variables..AgdaBind as patterns5PAgdaSince with-abstraction can change the type of a variable, we have to recheck the stripped with patterns when checking a with function..AgdaCheck a LHS. Main function.checkLeftHandSide a ps a ret checks that user patterns ps eliminate the type a1 of the defined function, and calls continuation ret if successful.5QAgdaDDetermine in which order the splits should be tried by reordering insertingdropping the problem equations.5RAgdaUThe loop (tail-recursive): split at a variable in the problem until problem is solved5SAgda>Ensures that we are not performing pattern matching on codata.5TAgdaWhen working with a monad m implementing MonadTCM and MonadError TCErr, suspendErrors f performs the TCM action f8 but catches any errors and throws them in the monad m instead.5UAgda5A more direct implementation of the specification 2softTypeError err == suspendErrors (typeError err)5VAgdaA convenient alias for liftTCM . typeErrord. Throws the error directly in the TCM even if there is a surrounding monad also implementing MonadError TCErr.5WAgdaCheck if the type is a data or record type and return its name, definition, parameters, and indices. Fails softly if the type could become a data'record type by instantiating a variable(metavariable, or fail hard otherwise.5XAgdayGet the constructor of the given record type together with its type. Throws an error if the type is not a record type.5YAgdaDisambiguate a projection based on the record type it is supposed to be projecting from. Returns the unambiguous projection name and its type. Throws an error if the type is not a record type.5ZAgdaDisambiguate a constructor based on the data type it is supposed to be constructing. Returns the unambiguous constructor name and its type. Precondition: type should be a data/record type.5[Agda#checkConstructorParameters c d pars, checks that the data/record type behind ch is has initial parameters (coming e.g. from a module instantiation) that coincide with an prefix of pars.5\Agda[Check that given parameters match the parameters of the inferred constructor/projection..AgdaLists of flexible patterns are ).5IAgda Trace, e.g., CheckPatternShadowing clause.Agda Trace, e.g. CheckPatternShadowing clauseAgda+The name of the definition we are checking.Agda The patterns.AgdaThe expected type  a =  ! b.Agda4Module parameter substitution from with-abstraction.AgdaiPatterns that have been stripped away by with-desugaring. ^ These should not contain any proper matches.Agda Continuation.5RAgda+The name of the definition we are checking.AgdaThe current state.5XAgdaName d of the record typeAgda Parameters pars of the record typeAgdaThe record type  Def d pars (for error reporting)5YAgda7Hiding info of the projection's principal argument. Nothing if Postfix projection.Agda+Name of the projection to be disambiguated.Agda#Record type we are projecting from.5ZAgda0The name of the constructor to be disambiguated.AgdaName of the datatype.AgdaParameters of the datatype5\Agda The record(data type name of the chosen constructor projection.Agda<The record/data type name as supplied by the type signature.AgdaThe parameters.................................None"#$,.14568=>?@ACEPSX\_`l*!9AgdaRun a tactic `tac : Term ! TC "` in a hole (second argument) of the type given by the third argument. Runs the continuation if successful.!;Agda=Checking a lambda whose domain type has already been checked.!<AgdaInfer the type of an expression. Implemented by checking against a meta variable. Except for neutrals, for them a polymorphic type is inferred.!>AgdaType check an expression.!?Agda<Check that an expression is a type without knowing the sort./Agda(Flag to control resurrection on domains./AgdaWe are checking a module telescope. We pass into the type world to check the domain type. This resurrects the whole context./AgdaWe are checking a telescope in a Pi-type. We stay in the term world, but add resurrected domains to the context to check the remaining domains and codomain of the Pi-type./Agda#Check that an expression is a type./Agda?Ensure that a (freshly created) function type does not inhabit l. Precondition: When noFunctionsIntoSize t tBlame( is called, we are in the context of tBlame< in order to print it correctly. Not being in context of tK should not matter, as we are only checking whether its sort reduces to l./AgdaBCheck that an expression is a type which is equal to a given type./ AgdaQType check a (module) telescope. Binds the variables defined by the telescope./ AgdaType check the telescope of a dependent function type. Binds the resurrected variables defined by the telescope. The returned telescope is unmodified (not resurrected)./ AgdaEType check a telescope. Binds the variables defined by the telescope./AgdaCheck a typed binding and extends the context with the bound variables. The telescope passed to the continuation is valid in the original context.fParametrized by a flag wether we check a typed lambda or a Pi. This flag is needed for irrelevance./AgdaPType check a lambda expression. "checkLambda bs e ty" means ( bs -> e) : ty/AgdaCheck that modality info in lambda is compatible with modality coming from the function type. If lambda has no user-given modality, copy that of function type./AgdaCheck that irrelevance info in lambda is compatible with irrelevance coming from the function type. If lambda has no user-given relevance, copy that of function type./AgdaCheck that quantity info in lambda is compatible with quantity coming from the function type. If lambda has no user-given quantity, copy that of function type./AgdamInsert hidden lambda until the hiding info of the domain type matches the expected hiding info. Throws /AgdacheckAbsurdLambda i h e t# checks absurd lambda against type t. Precondition: e = AbsurdLam i h/Agda%checkExtendedLambda i di qname cs e t/ check pattern matching lambda. Precondition: e = ExtendedLam i di qname cs/AgdaRun a computation.&If successful, that's it, we are done.If IlltypedPattern p a, NotADatatype a or CannotEliminateWithPattern p a is thrown and type a is blocked on some meta x?, reset any changes to the state and pass (the error and) x to the handler.If +SplitError (UnificationStuck c tel us vs _), is thrown and the unification problem us =?= vs : tel is blocked on some meta x pass x to the handler.(If another error was thrown or the type a# is not blocked, reraise the error.nNote that the returned meta might only exists in the state where the error was thrown, thus, be an invalid b in the current state./AgdawPicks up record field assignments from modules that export a definition that has the same name as the missing field./AgdacheckRecordExpression fs e t) checks record construction against type t. Precondition  e = Rec _ fs./Agda#checkRecordUpdate ei recexpr fs e t Precondition e = RecUpdate ei recexpr fs./AgdaVRemove top layers of scope info of expression and set the scope accordingly in the  |./Agda Checking / (deprecated)/ Agda Checking /  (deprecated)/!Agda*Unquote a TCM computation in a given hole./"Agda-Check an interaction point without arguments./#Agda&Check an underscore without arguments./$AgdaType check a meta variable./%Agda\Infer the type of a meta variable. If it is a new one, we create a new meta for its type./&AgdaType check a meta variable. If its type is not given, we return its type, or a fresh one, if it is a new meta. If its type is given, we check that the meta has this type, and we return the same type./'AgdatTurn a domain-free binding (e.g. lambda) into a domain-full one, by inserting an underscore for the missing type./(Agda,Check arguments whose value we already know.eThis function can be used to check user-supplied parameters we have already computed by inference.Precondition: The type t of the head has enough domains./)Agda.Check an argument whose value we already know./*AgdaCheck a single argument./-AgdaUsed to check aliases f = e. Switches off + for the checking of top-level application./.Agda?Check whether a de Bruijn index is bound by a module telescope.//Agda=Infer the type of an expression, and if it is of the form  {tel} -> D vs for some datatype DM then insert the hidden arguments. Otherwise, leave the type polymorphic./AgdaExpected hiding.AgdaExpected to be a function type.AgdaContinuation on blocked type.AgdaQContinuation when expected hiding found. The continuation may assume that the Type is of the form (El _ (Pi _ _)).Agda!Term with hidden lambda inserted./AgdaModules and field assignments.Agda#Names of fields of the record type.Agda)Completed field assignments from modules./AgdamHow do we related the inferred type of the record expression to the expected type? Subtype or equal type?Agdamfs : modules and field assignments.AgdaMust be  A.Rec _ mfs.Agda#Expected type of record expression.Agda Record value in internal syntax./(Agda5User-supplied arguments (hidden ones may be missing).Agda+Inferred arguments (including hidden ones).Agda7Type of the head (must be Pi-type with enough domains).Agda-Remaining inferred arguments, remaining type./)AgdaUser-supplied argument.Agda+Inferred arguments (including hidden ones).Agda7Type of the head (must be Pi-type with enough domains).Agda-Remaining inferred arguments, remaining type.7!9!:!;!<!=!>!?//////// / / / / /////////////////// /!/"/#/$/%/&/'/(/)/*/+/,/-/.///0/17/!?//// / / / //// ////////!;/////////!>!=!:// /!!9/"/#/$/%/&/'/(/)/*!</+/,/-/.///0/1None"#$,.14568=>?@ACEPSX\_`-/4Agda6Split pattern variables according to with-expressions./5AgdaAbstract with-expressions vs+ to generate type for with-helper function.Each  EqualityType, coming from a rewrite , will turn into 2 abstractions./7AgdaFrom a list of with and rewrite; expressions and their types, compute the list of final with" expressions (after expanding the rewrites)./8AgdaFCompute the clauses for the with-function given the original patterns./9Agda >stripWithClausePatterns cxtNames parent f t  qs np  ps = ps'Example:  record Stream (A : Set) : Set where coinductive constructor delay field force : A Stream A record SEq (s t : Stream A) : Set where coinductive field ~force : let a , as = force s b , bs = force t in a "a b SEq as bs test : (s : Nat Stream Nat) (t : Stream Nat) ! SEq (delay s) t ! SEq t (delay s) ~force (test (a , as) t p) with force t ~force (test (suc n , as) t p) | b , bs = ? With function: @ f : (t : Stream Nat) (w : Nat Stream Nat) (a : Nat) (as : Stream Nat) (p : SEq (delay (a , as)) t) ! (fst w "a a) SEq (snd w) as  = t a as p -- reorder to bring with-relevant (= needed) vars first  = a as t p !  qs = (a , as) t p ~force ps = (suc n , as) t p ~force ps' = (suc n) as t p "Resulting with-function clause is:  f t (b , bs) (suc n) as t p &Note: stripWithClausePatterns factors ps through qs, thus  ps = qs[ps'] where [..]Q is to be understood as substitution. The projection patterns have vanished from ps' (as they are already in qs)./:AgdaConstruct the display form for a with function. It will display applications of the with function as applications to the original function. For instance,  aux a b c as  f (suc a) (suc b) | c /4Agda, context of types and with-arguments.Agda " t type of rhs.Agda " as types of with arguments.Agda " vs with arguments. Output:Agda( , ,,t',as',vs') where  :part of context needed for with arguments and their types. >part of context not needed for with arguments and their types.*permutation from  to   as returned by '.   " t'type of rhs under  " as',types with with-arguments depending only on  . " vs'with-arguments under ./5Agda 7 context for types of with types.Agda , " vs : raise  as with and rewrite-expressions.Agda " as8 types of with and rewrite-expressions.Agda "  = context extension to type with-expressions.Agda  , " b type of rhs.Agda ! wtel !  2 ! b 2 such that [vs/wtel]wtel = as and [vs/wtel] 2 =   and [vs/wtel]b 2 = b+. Plus the final number of with-arguments./8 Agda6Names of the module parameters of the parent function.AgdaName of the parent function.AgdaName of the with-function.AgdaTypes of the parent function.AgdaContext of parent patterns.AgdaParent patterns.Agda.Number of module parameters in parent patternsAgda1Substitution from parent lhs to with function lhsAgdaFinal permutation. AgdaNumber of needed vars. AgdaNumber of with expressions. Agda With-clauses. Agda,With-clauses flattened wrt. parent patterns./9 AgdacxtNames6 names of the module parameters of the parent functionAgdaparent name of the parent function.Agdaf name of with-function.Agdat+ top-level type of the original function.Agda* context of patterns of parent function.Agdaqs* internal patterns for original function.Agdanpars number of module parameters in qs.Agda permutation taking vars(qs) to  support().Agdaps, patterns in with clause (eliminating type t). Agdaps'0 patterns for with function (presumably of type )./:AgdaThe name of parent function.AgdaThe name of the with -function.Agda  The arguments of the with function before the with expressions.Agda  The arguments of the with function after the with expressions.Agdan The number of with expressions.Agdaqs The parent patterns.Agdaperm7 Permutation to split into needed and unneeded vars.AgdalhsPerm9 Permutation reordering the variables in parent patterns./4/5/6/7/8/9/:/;/4/5/6/7/8/9/:/;None"#$,.14568=>?@ACEPSX\_`;5]AgdaChecks that builtin with name  b : String of type t : Term, is a data type or inductive record with n : Int; constructors. Returns the name of the data/record type./<AgdabindPostulatedName builtin q m checks that q. is a postulated name, and binds the builtin builtin to the term m q def , where def is the current  of q.5^AgdaLCheck that we're not trying to bind true and false to the same constructor.5_AgdasOnly use for datatypes with distinct arities of constructors. Binds the constructors together with the datatype.5`Agda'Bind BUILTIN EQUALITY and BUILTIN REFL./=Agda&Bind a builtin thing to an expression./@Agda#Bind a builtin thing to a new name.Since their type is closed, it does not matter whether we are in a parameterized module when we declare them. We simply ignore the parameters./</=/>/?/@/A/=/@/A/</>/?None"#$,.14568=>?@ACEPSX_`Ay&Agda3Binds the FLAT builtin, and changes its definition.&AgdaLBinds the SHARP builtin, and changes the definitions of INFINITY and SHARP.&AgdaGBinds the INFINITY builtin, but does not change the type's definition.&Agda The type of &m.&Agda The type of &o_.&Agda The type of ".&&&&&&&&&&&&None"#$,.14568=>?@ACEPSX\_`"5aAgda!Allow partial covering for split?5bAgda)Introduce trailing pattern variables via /Q?5cAgdavThe set of patterns used as cover. Entering the closure puts you directly in the right context (and cps) for the RHS./BAgdaA Covering is the result of splitting a /F./DAgda@De Bruijn level (counting dot patterns) of argument we split on./EAgdaECovering clauses, indexed by constructor/literal these clauses share./HAgdaType of variables in scPats./IAgdaMThe patterns leading to the currently considered branch of the split tree./JAgdaSubstitution from /HQ to old context. Only needed directly after split on variable: * To update /LT * To rename other split variables when splitting on multiple variables. scSubst is not ` transitive'I, i.e., does not record the substitution from the original context to /HL over a series of splits. It is freshly computed after each split by computeNeighborhood ; also /TI, which does not split on a variable, should reset it to the identity  , lest it be applied to /L again, leading to Issue 1294./KAgdaWe need to keep track of the module parameter checkpoints for the clause for the purpose of inferring missing instance clauses./LAgda'The type of the rhs, living in context /H.. This invariant is broken before calls to /Q ; there, /L lives in the old context. /Q moves /L0 to the new context by applying substitution /J./MAgda,Project the split clauses out of a covering./NAgdaJCreate a split clause from a clause in internal syntax. Used by make-case./OAgda1Top-level function for checking pattern coverage.Effects:3Marks unreachable clauses as such in the signature.0Adds missing instances clauses to the signature./PAgdaXTop-level function for eliminating redundant clauses in the interactive case splitter5dAgda=cover f cs (SClause _ _ ps _) = return (splitTree, used, pss)%. checks that the list of clauses cs/ covers the given split clause. Returns the  splitTree, the used clauses, and missing cases pss.*Effect: adds missing instance clauses for f to signature.5eAgda4Append an hcomp clause to the clauses of a function.5fAgda6Append a instance clause to the clauses of a function.5gAgda_Check that a type is a non-irrelevant datatype or a record with named constructor. Unless the  argument is " the data type must be inductive./QAgdaUpdate the target type, add more patterns to split clause if target becomes a function type. Returns the domains of the function type (if any).5hAgda <computeNeighbourhood delta1 delta2 d pars ixs hix tel ps con  delta1 Telescope before split point n Name of pattern variable at split point delta2 Telescope after split point d Name of datatype to split at pars Data type parameters ixs Data type indices hix Index of split variable tel Telescope for patterns ps ps Patterns before doing the split cps Current module parameter checkpoints con Constructor to fit into hole dtype == d pars ixs/RAgdaEntry point from Interaction.MakeCase./SAgdaEntry point from TypeChecking.Empty and Interaction.BasicOps. splitLast CoInductive is used in the refine tactics.5iAgda$split ind splitClause x = return res splits  splitClause at pattern var x (de Bruijn index).Possible results res are: Left err: Splitting failed.Right covering: A covering set of split clauses, one for each valid constructor. This could be the empty set (denoting an absurd clause).5jAgdaConvert a de Bruijn index relative to the clause telescope to a de Bruijn level. The result should be the argument position (counted from left, starting with 0) to split at (dot patterns included!).5kAgda+split' ind pc ft splitClause x = return res splits  splitClause at pattern var x (de Bruijn index).Possible results res are: Left err: Splitting failed.Right (Left splitClause'): Absurd clause (type of x has 0 valid constructors).Right (Right covering)H: A covering set of split clauses, one for each valid constructor./TAgdaGsplitResult for MakeCase, tries to introduce IApply or ProjP copatterns5lAgda9Tries to split the result to introduce an IApply pattern.5mAgda #splitResultRecord f sc = return resIf the target type of scC is a record type, a covering set of split clauses is returned (sc: extended by all valid projection patterns), otherwise  res == Left _V. Note that the empty set of split clauses is returned if the record has no fields./UAgdaFor debugging only./OAgdaName f of definition.Agda7Absolute type (including the full parameter telescope).Agda Clauses of f!. These are the very clauses of f in the signature.5eAgdaFunction name.Agdaindex of hcomp patternAgda&Blocking var that lead to hcomp split.AgdaClause before the hcomp splitAgdaClause to add.5fAgdaFunction name.Agda"Clause to add. Clause hiding (in M ) must be .5n AgdaTelescope before split point.Agda(Name of pattern variable at split point.AgdaTelescope after split point.AgdaName of datatype to split at.AgdaData type parameters.AgdaData type indices.AgdaIndex of split variable.AgdaTelescope for the patterns.Agda Patterns before doing the split. AgdaWCurrent checkpoints -> QName -- ^ Constructor to fit into hole. AgdaNew split clause if successful.5h AgdaTelescope before split point.Agda(Name of pattern variable at split point.AgdaTelescope after split point.AgdaName of datatype to split at.AgdaData type parameters.AgdaData type indices.AgdaIndex of split variable.AgdaTelescope for the patterns.Agda Patterns before doing the split. AgdaCurrent checkpoints AgdaConstructor to fit into hole. AgdaNew split clause if successful.5iAgda:Coinductive constructors are allowed if this argument is .AgdaDon't fail if computed /B! does not cover all constructors.5kAgdaUse isEmptyType to check whether the type of the variable to split on is empty. This switch is necessary to break the cycle between split' and isEmptyType.Agda:Coinductive constructors are allowed if this argument is .AgdaDon't fail if computed /B! does not cover all constructors.AgdaIf 5o2, introduce new trailing variable patterns via /Q.*M/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/F/G/H/I/J/K/L/N/Q/B/C/D/E/M/O/P/R/S/T*MNone"#$,.14568=>?@ACEPSX_`(bAgdaTEnsure that a type is empty. This check may be postponed as emptiness constraint.(cAgda0Check whether some type in a telescope is empty.(dAgdaCheck whether a type is empty.5pAgdaGeneric failure5qAgdaFailure with informative error5rAgdaEmptyness check blocked(bAgdaRange of the absurd pattern.AgdaHType that should be empty (empty data type or iterated product of such).(b(c(d(d(c(bNone"#$,.14568=>?@ACEPSX_` "*Agda%Process function clauses into case tree. This involves: 1. Coverage checking, generating a split tree. 2. Translation of lhs record patterns into rhs uses of projection. Update the split tree. 3. Generating a case tree from the split tree. Phases 1. and 2. are skipped if Nothing./\AgdaStripped-down version of F used in clause compiler./^Agda8Pattern variables are considered in left-to-right order./dAgdaSStrip down a clause. Don't forget to apply the substitution to the dot patterns!/gAgdaGet the index of the next argument we need to split on. This the number of the first pattern that does a (non-lazy) match in the first clause. Or the first lazy match where all clauses agree on the constructor, if there are no non-lazy matches./hAgda]Is is not a variable pattern? And if yes, is it a record pattern and/or a fallThrough one?/iAgdaIs this a variable pattern?Maintain invariant: isVar = isNothing . properSplit!/jAgdasplitOn single n cs* will force expansion of catch-alls if single./lAgda4Expand catch-alls that appear before actual matches.Example: % true y x false false y will expand the catch-all x to false.Catch-alls need also to be expanded if they come before/after a record pattern, otherwise we get into trouble when we want to eliminate splits on records later.#Another example (see Issue 1650): 8 f (x, (y, z)) true = a f _ false = b  Split tree:  0 (first argument of f) - 1 (second component of the pair) - 3 (last argument of f) -- true -> a - false -> b 1 We would like to get the following case tree:  case 0 of _,_ -> case 1 of _,_ -> case 3 of true -> a; false -> b _ -> case 3 of true -> a; false -> b _ -> case 3 of true -> a; false -> b Example from issue #2168: G f x false = a f false = _ -> b f x true = c  case tree: c f x y = case y of true -> case x of true -> c false -> b false -> a Example from issue #3628: H f i j k (i = i0)(k = i1) = base f i j k (j = i1) = base  case tree:  f i j k o = case i of i0 -> case k of i1 -> base _ -> case j of i1 -> base _ -> case j of i1 -> base /mAgda<Make sure (by eta-expansion) that clause has arity at least n where n) is also the length of the provided list."*Agda=Translate record patterns and coverage check with given type?"*/[/\/]/_/^/`/b/a/c/d/e/f/g/h/i/j/k/l/m/n/`/b/a/c"*/\/]/_/^/[/d/e/f/g/h/i/j/k/l/m/nNone"#$,.14568=>?@ACEPSX_`D/sAgda 'checkRecDef i name con ps contel fields nameRecord type identifier.con Maybe constructor name and info.psRecord parameters.contel!Approximate type of constructor (fields> -> Set). Does not include record parameters.fieldsList of field signatures./wAgda(checkRecordProjections m r q tel ftel fs. m name of the generated moduler name of the record typecon name of the record constructortel )parameters and record variable r ("self")ftel telescope of fieldsfs the fields to be checked/s AgdaPosition and other info.AgdaRecord type identifier.AgdaCheck universes?Agda$Optional: (co)inductive declaration.Agda#Optional: user specified eta/no-etaAgdaOptional: constructor name.AgdaRecord parameters.Agda!Approximate type of constructor (fields0 -> Set). Does not include record parameters.AgdaField signatures./uAgdasome name, e.g. record nameAgda param types Agdafields' types  " Agda fields' namesAgdarecord type  " T/vAgdasome name, e.g. record nameAgda param types Agdafields' types  " Agda fields' namesAgdarecord type  " T/s/t/u/v/w/s/t/u/v/wNone"#$,.14568=>?@ACEPSX\_`&AgdaSet T" according to termination info in  }4, which comes from a possible termination pragma.&Agda)Enter a new section during type-checking.&Agda,Type check a definition by pattern matching./zAgda,Which argument indexes have a partial split./{AgdaParameters for creating a with -function./~AgdaParent function name./AgdaWith function name./AgdaType of the parent function./AgdaContext of the parent patterns./AgdaRTypes of arguments to the with function before the with expressions (needed vars)./AgdaSTypes of arguments to the with function after the with expressions (unneeded vars)./AgdaWith and rewrite expressions./Agda*Types of the with and rewrite expressions./AgdaType of the right hand side./AgdaParent patterns./Agda.Number of module parameters in parent patterns/AgdaQPermutation resulting from splitting the telescope into needed and unneeded vars./Agda;Permutation reordering the variables in the parent pattern./Agda@Final permutation (including permutation for the parent clause)./Agda'The given clauses for the with function/AgdaIA single clause without arguments and without type signature is an alias./Agda'Check a trivial definition of the form f = e/Agda,Type check a definition by pattern matching./AgdaQInsert some with-patterns into the with-clauses LHS of the given RHS. (Used for rewrite.)/AgdaeInsert with-patterns before the trailing with patterns. If there are none, append the with-patterns./AgdaType check a function clause./AgdaType check the with and rewrite lhss and/or the rhs./AgdaInvoked in empty context./AgdaType check a where clause./AgdaSet the current clause number.&Agda'the type we expect the function to haveAgdais it irrelevant (for instance)Agda2are the clauses delayed (not unfolded willy-nilly)Agdapdoes the definition come from an extended lambda (if so, we need to know some stuff about lambda-lifted args)AgdaEis it a with function (if so, what's the name of the parent function)Agda range infoAgdathe name of the functionAgdathe clauses to check/ Agda'the type we expect the function to haveAgdais it irrelevant (for instance)Agda2are the clauses delayed (not unfolded willy-nilly)Agdapdoes the definition come from an extended lambda (if so, we need to know some stuff about lambda-lifted args)AgdaEis it a with function (if so, what's the name of the parent function)Agda range infoAgdathe name of the functionAgdaRsubstitution (from with abstraction) that needs to be applied to module parametersAgdathe clauses to check/Agda(Type of function defined by this clause.Agda<Module parameter substitution arising from with-abstraction.AgdaClause.AgdaType-checked clause/Agda Range of lhs.AgdaName of function.AgdaPatterns in lhs.AgdaTop-level type of function.Agda Result of type-checking patternsAgda Rhs to check./AgdaName of function.AgdaName of the with-function.AgdaType of function.Agda Result of type-checking patternsAgdaWith-expressions.AgdaTypes of with-expressions.AgdaWith-clauses to check./AgdaWhere-declarations to check.Agda Continuation.&&&&&/x/y/z/{/}/|///////////////~/////////////&&///&/&///{/}/|///////////////~//x/y/z/////&/None"#$,.14568=>?@ACEPSX\_`d!CAgdaBChecking the type of an overloaded projection application. See 5s.!DAgdaPrecondition: Application hd args = appView e.!EAgdacheckApplication hd args e t) checks an application. Precondition: Application hs args = appView echeckApplication1 disambiguates constructors (and continues to 5t#) and resolves pattern synonyms.!FAgdaCheck that a list of arguments fits a telescope. Inserts hidden arguments as necessary. Returns the type-checked arguments and the remaining telescope.!GAgda!checkArguments exph r args t0 t k tries checkArgumentsE exph args t0 t . If it succeeds, it continues k with the returned results. If it fails, it registers a postponed typechecking problem and returns the resulting new meta variable.Checks e := ((_ : t0) args) : t.5uAgda+Ranges of checked arguments, where present.5vAgdaInfer the type of a head thing (variable, function symbol, or constructor). We return a function that applies the head to arguments. This is because in case of a constructor we want to drop the parameters.5wAgda3The second argument is the definition of the first.5xAgda?The second argument is the definition of the first. Returns 3$ if ok, otherwise the error message.5yAgda checkHeadApplication e t hd args checks that e has type t, assuming that e has the form hd args3. The corresponding type-checked term is returned.If the head term hd< is a coinductive constructor, then a top-level definition fresh tel = hd args0 (where the clause is delayed) is added, where tel= corresponds to the current telescope. The returned term is  fresh tel.Precondition: The head hdS has to be unambiguous, and there should not be any need to insert hidden lambdas.5zAgdaFIf we've already checked the target type we don't have to call coerce.5{AgdaCheck a list of arguments: checkArgs args t0 t1 checks that t0 = Delta -> t0' and  args : DeltaT. Inserts hidden arguments to make this happen. Returns the evaluated arguments vs, the remaining type t0' (which should be a subtype of t1) and any constraints cs< that have to be solved for everything to be well-formed.5tAgdaCheck the type of a constructor application. This is easier than a general application since the implicit arguments can be inserted without looking at the arguments to the constructor.5|Agda0Returns an unblocking action in case of failure.5}AgdaCInferring the type of an overloaded projection application. See 5~.5AgdaBChecking the type of an overloaded projection application. See 5~.5~Agda;Inferring or Checking an overloaded projection application.The overloaded projection is disambiguated by inferring the type of its principal argument, which is the first visible argument.5sAgdaSame arguments 5~O above but also gets the position, value and type of the principal argument.5Agdav"pathAbs (PathView s _ l a x y) t" builds "( t) : pv" Preconditions: PathView is PathType, and t[i0] = x, t[i1] = y5Agda `primComp : " {!} (A : (i : I) ! Set (! i)) ( : I) (u : " i ! Partial  (A i)) (a : A i0) ! A i1Check: #u i0 = ( _ ! a) : Partial  (A i0).5Agda IprimHComp : " {!} {A : Set !} { : I} (u : " i ! Partial  A) (a : A) ! ACheck: u i0 = ( _ ! a) : Partial  A.5Agda Btransp : "{!} (A : (i : I) ! Set (! i)) ( : I) (a0 : A i0) ! A i1Check: If , then A i = A i0 : Set (! i) must hold for all i : I.5Agda prim^glue : " {! !'} {A : Set !} { : I} ! {T : Partial  (Set !')} ! {e : PartialP  ( o ! T o "C A)} ! (t : PartialP  T) ! (a : A) ! primGlue A T eCheck   " a = t 1=1 or actually the equivalent: ( _ ! a) = t : PartialP  T!FAgda)Eagerly insert trailing hidden arguments?AgdaRange of application.AgdaArguments to check.Agda%Telescope to check arguments against.Agda8Checked arguments and remaining telescope if successful.5Agda#Have we already checked the target?Agda!Insert trailing hidden arguments?AgdaRange of the function.Agda Arguments.AgdaType of the function.AgdaType of the application.5~Agda7The whole expression which constitutes the application.AgdaEThe origin of the projection involved in this projection application.Agda,The projection name (potentially ambiguous).Agda The arguments to the projection.Agda(The expected type of the expression (if 3 , infer it).Agda9The type-checked expression and its type (if successful).!C!D!E!F!G!G!F!E!D!CNone"#$,.14568=>?@ACEPSX_`\5Agda*Environment for naming of local variables.5Agda;Maps case tree de-bruijn indices to TTerm de-bruijn indices5AgdayTTerm de-bruijn index of the current catch all If an inner case has no catch-all clause, we use the one from its parent.5Agda5Recompile clauses with forcing translation turned on./Agda-Converts compiled clauses to treeless syntax.Note: Do not use any of the concrete names in the returned term for identification purposes! If you wish to do so, first apply the Agda.Compiler.Treeless.NormalizeNames transformation.5Agda1Does not require the name to refer to a function.5Agda.Initial environment for expression generation.5Agda%Term variables are de Bruijn indices.5Agda$Case variables are de Bruijn levels.5Agda<Compile a case tree into nested case and record expressions.5AgdaShrinks or grows the context to the given size. Does not update the catchAll expression, the catchAll expression MUST NOT be used inside cont.5AgdaAdds lambdas until the context has at least the given size. Updates the catchAll expression to take the additional lambdas into account.5AgdaReplace de Bruijn Level x by n new variables.5AgdaPrecondition: Map not empty.5AgdaeTranslate the actual Agda terms, with an environment of all the bound variables from patternmatching. Agda terms are in de Bruijn indices, but the expected TTerm de bruijn indexes may differ. This is due to additional let-bindings introduced by the catch-all machinery, so we need to lookup casetree de bruijn indices in the environment as well.5AgdaCase tree de bruijn index.AgdaTTerm de bruijn index.5Agdacase tree de bruijn levelAgdaTTerm de bruijn index//// None "#$&',.14568=>?@ACEMPSX\_`)5AgdalRemove all non-coinductive projections from an algebraic term (not going under binders). Also, remove s.5Agda)Extract recursive calls from expressions.5Agda]Convert a term (from a dot pattern) to a pattern for the purposes of the termination checker.SIZESUC is treated as a constructor./Agda:The result of termination checking a module. Must be a 3 and have ..5Agda-Call graph with call info for composed calls./Agda4Entry point: Termination check a single declaration.Precondition:  must be set correctly.5AgdaHTermination check a single declaration (without necessarily ignoring abstract)./Agda8Entry point: Termination check the current mutual block.5Agda termMutual'D checks all names of the current mutual block, henceforth called allNames, for termination.allNames is taken from Internal` syntax, it contains also the definitions created by the type checker (e.g., with-functions).5AgdaSmart constructor for f . Removes h that are not mentioned in i.5Agda reportCalls for debug printing.0Replays the call graph completion for debugging.5AgdatermFunction name checks name for termination.5AgdaTo process the target type.5Agda3Termination check a definition by pattern matching.BTODO: Refactor! As this function may be called twice, once disregarding dot patterns, the second time regarding dot patterns, it is better if we separated bare call extraction from computing the change in structural order. Only the latter depends on the choice whether we consider dot patterns or not.5Agda Collect calls in type signature f : (x1:A1)...(xn:An) -> BI. It is treated as if there were the additional function clauses. @T f = A1 f x1 = A2 f x1 x2 = A3 ... f x1 ... xn = B @5AgdaMask arguments and result for termination checking according to type of function. Only arguments of types ending in data/record or Size are counted in.5Agda0Is the current target type among the given ones?5Agda:Convert a term (from a dot pattern) to a DeBruijn pattern.MThe term is first normalized and stripped of all non-coinductive projections.5AgdaKMasks all non-data/record type patterns if --without-K. See issue #1023.5Agda(Extract recursive calls from one clause.5Agda7Extract recursive calls from a constructor application.5Agda-Extract calls from with function application.5AgdaHandles function applications g es.5Agda Rewrite type tel -> Size< u to  tel -> Size.5Agda compareArgs es5Compare the list of de Bruijn patterns (=parameters) pats with a list of arguments esB and create a call maxtrix with |es| rows and |pats| columns.8The guardedness is the number of projection patterns in pats) minus the number of projections in es.5AgdaTraverse patterns from left to right. When we come to a projection pattern, switch usage of SIZELT constraints: on, if coinductive, off, if inductive.UNUSED5Agda compareElim e dbpat5AgdaIn dependent records, the types of later fields may depend on the values of earlier fields. Thus when defining an inhabitant of a dependent record type such as  by copattern matching, a recursive call eliminated by an earlier projection (proj ) might occur in the definition at a later projection (proj ). Thus, earlier projections are considered "smaller" when comparing copattern spines. This is an ok approximation of the actual dependency order. See issues 906, 942.5Agda5 turns the result of 5 into a proper call matrix5Agda57 adds guardedness flag in the upper left corner (0,0).5Agda=Compose something with the upper-left corner of a call matrix5AgdaStripping off a record constructor is not counted as decrease, in contrast to a data constructor. A record constructor increases/decreases by 0, a data constructor by 1.5Agda$Compute the proper subpatterns of a -.5Agda2Normalize outermost constructor name in a pattern.5Agda compareTerm' t dbpat5AgdasubTerm# computes a size difference (Order)5AgdaCompare two variables.@The first variable comes from a term, the second from a pattern./Agda$Extract recursive calls from a term./Agda$Extract recursive calls from a type./Agda*Sorts can contain arbitrary terms of type Level<, so look for recursive calls also in sorts. Ideally, ; would not be its own datatype but just a subgrammar of *, then we would not need this boilerplate./Agda/Extract recursive calls from level expressions./AgdaUThe function names defined in this block on top-level. (For error-reporting only.)5AgdaConstructor name.Agda>Should the constructor be treated as inductive or coinductive?Agda@All the arguments, and for every argument a boolean which is 3@ iff the argument should be viewed as preserving guardedness.//////None"#$,.14568=>?@ACEPSX\_`<!@Agda@Check an application of a section (top-level function, includes $).!AAgda Type check a single declaration.!BAgda&Type check a sequence of declarations./AgdaCached checkDecl/AgdaICheck if there is a inferred eta record type in the mutual block. If yes, repeat the record pattern translation for all function definitions in the block. This is necessary since the original record pattern translation will have skipped record patterns of the new record types (as eta was off for them). See issue  2308 (and 2197)./AgdaNRun a reflected TCM computatation expected to define a given list of names./AgdaInstantiate all metas in  associated to  _. Makes sense after freezing metas. Some checks, like free variable analysis, are not in  y, so they will be more precise (see issue 1099) after meta instantiation. Precondition: name has been added to signature already./AgdaHighlight a declaration. Called after checking a mutual block (to ensure we have the right definitions for all names). For modules inside mutual blocks we haven't highlighted their contents, but for modules not in a mutual block we have. Hence the flag./Agda Termination check a declaration./Agda+Check a set of mutual names for positivity./AgdaCheck that all coinductive records are actually recursive. (Otherwise, one can implement invalid recursion schemes just like for the old coinduction.)/Agda7Check a set of mutual names for constructor-headedness./Agda4Check a set of mutual names for projection likeness.Only a single, non-abstract function can be projection-like. Making an abstract function projection-like would break the invariant that the type of the principle argument of a projection-like function is always inferable./Agda>Freeze metas created by given computation if in abstract mode./AgdaType check an axiom./AgdaData and record type signatures need to remember the generalized parameters for when checking the corresponding definition, so for these we pass in the parameter telescope separately./Agda,Type check a primitive function declaration./AgdaCheck a pragma./Agda=Type check a bunch of mutual inductive recursive definitions.XAll definitions which have so far been assigned to the given mutual block are returned./AgdaFType check the type signature of an inductive or recursive definition./AgdaType check a module./Agda Helper for !@.NMatches the arguments of the module application with the module parameters.dReturns the remaining module parameters as an open telescope. Warning: the returned telescope is notO the final result, an actual instantiation of the parameters does not occur./Agda"Check an application of a section./AgdarType check an import declaration. Actually doesn't do anything, since all the work is done when scope checking.!@AgdaName m1' of module defined by the module macro.AgdaThe module macro  tel ! m2 args.AgdaImported names and modules/AgdaName of applied module.AgdaThe module parameters.Agda(The arguments this module is applied to.Agda>The remaining module parameters (has free de Bruijn indices!)./AgdaName m1' of module defined by the module macro.AgdaThe module macro  tel ! m2 args.AgdaImported names and modules%!@!A!B//////////////////////////////////%/!B!A////////////////////////////!@/////qNone"#$,.14568=>?@ACEPSX_`Z!<!>!A!B/!B!A/!<!>!None"#$,.14568=>?@ACEPSX_`5Agda4Alpha-Equivalence of patterns, ignoring dot patterns5Agda+currently we only support variable patterns5AgdaA sequence of decisions b leading to a head a.5Agdathe list of choices5Agda?This is a n^2 grouping algorithm which uses only alpha-equality5AgdaExpects a sorted list.5Agda Similar to 5./Agda s are not renamed.//"None"#$&',.14568=>?@ACEPSX_`35Agda$Name sets for classifying a pattern.5Agdaname of defined symbol5Agdavalid constructor names5Agdavalid field names5AgdaData structure filled in by  buildParsers. The top-level parser pTop is of primary interest, but pArgsK is used to convert module application from concrete to abstract syntax.5AgdaBills the operator parser.5AgdaCompute all defined names in scope and their fixities/notations. Note that overloaded names (constructors) can have several fixities/notations. Then we i. (See issue 1194.)5AgdaYCompute all names (first component) and operators/notations (second component) in scope.5Agda`Builds a parser for operator applications from all the operators and function symbols in scope.When parsing a pattern we do not use bound names. The effect is that unqualified operator parts (that are not constructor parts) can be used as atomic names in the pattern (so they can be rebound). See testsucceed OpBind.agda for an example.When parsing a pattern we also disallow the use of sections, mainly because there is little need for sections in patterns. Note that sections are parsed by splitting up names into multiple tokens (_+_ is replaced by _, + and _), and if we were to support sections in patterns, then we would have to accept certain such sequences of tokens as single pattern variables.tThe list of names must include every name part in the expression/pattern to be parsed (excluding name parts inside things like parenthesised subexpressions that are treated as atoms). The list is used to optimise the parser. For instance, a given notation is only included in the generated grammar if all of the notation's name parts are present in the list of names.(The returned list contains all operators notations1sections that were used to generate the grammar.5AgdaView a pattern p as a list p0 .. pn where p04 is the identifier (in most cases a constructor).8Pattern needs to be parsed already (operators resolved).5Agda$Returns the list of possible parses.5Agda(The returned list contains all operators notations1sections that were used to generate the grammar.5Agda(Returns zero or one classified patterns./AgdaJParses a left-hand side, and makes sure that it defined the expected name./AgdaParses a pattern.5AgdaHelper function for / and /.5AgdaHelper function for / and /.5Agda,Return all qualifiers occuring in a list of  As. Each qualifier is returned as a list of names, e.g. for  Data.Nat._+_ we return the list  [Data,Nat]./Agda0Parse a list of expressions into an application./AgdaZParse an expression into a module application (an identifier plus a list of arguments).//////////#None"#$,.14568=>?@ACEPSX_`400$None"#$,.14568=>?@ACEPSX_`500%None"#$,.14568=>?@ACEPSX_`sr+5Agda,The with clauses haven't been translated yet5Agda rewrite e (many)5Agdawith e (many)5Agdapthe subclauses spawned by a with (monadic because we need to reset the local vars before checking these clauses)5Agda4Make sure definition is in same module as signature.0 Agdaas seen from inside the module0 Agda*Temporary data type to scope check a file.0 Agda/The file path from which we loaded this module.0AgdagThe expected module name (coming from the import statement that triggered scope checking this file).0AgdaThe file content.5Agda$We for now disallow let-bindings in data and recordS telescopes. This due "nested datatypes"; there is no easy interpretation of Z data D (A : Set) (open M A) (b : B) : Set where c : D (A A) b ! D A b  where B is brought in scope by open M A.5AgdaWIf a set is given, then the first name must correspond to one of the names in the set.5AgdaWrapper to resolve a name to a  (rather than an T).5AgdaWIf a set is given, then the first name must correspond to one of the names in the set.0AgdaPThings that can be translated to abstract syntax are instances of this class.5AgdaFMake sure that there are no dot patterns (called on pattern synonyms).5AgdaKMake sure that there are no dot patterns (WAS: called on pattern synonyms).5AgdaCCompute the type of the record constructor (with bogus target type)5Agda BcheckModuleMacro mkApply range access concreteName modapp open dirPreserves local variables.5AgdaThe public) keyword must only be used together with open.5AgdaJComputes the range of all the "to" keywords used in a renaming directive.5AgdaScope check a 4.5Agda(This function should be used instead of 0a for things that need to keep track of precedences to make sure that we don't forget about it.0AgdaaThis operation does not affect the scope, i.e. the original scope is restored upon completion.5AgdaLike 0F but returns the scope after the completion of the second argument.5AgdalTranslate and possibly bind a pattern variable (which could have been bound before due to non-linearity).5Agda Peel off B and represent it as an .5Agda Peel off B and represent it as an , throwing away any name.5AgdaBy default, arguments are Relevant.5AgdaAParse a possibly dotted C.Expr as A.Expr. Bool = True if dotted.5AgdamTranslate concrete expression under at least one binder into nested lambda abstraction in abstract syntax.5Agda'Scope check extended lambda expression.5Agda*Scope check a module (top level function).5AgdaACheck whether a telescope has open declarations or module macros.5Agda,Returns the scope inside the checked module.0AgdaThe top-level module name.5Agda@runs Syntax.Concrete.Definitions.niceDeclarations on main module5AgdacBind generalizable variables if data or record decl was split by the system (origin == Inserted)5Agda;Apply an abstract syntax pattern head to pattern arguments. Fails with +P if head is not a constructor pattern (or similar) that can accept arguments.5Agda An argument  OpApp C.ExprB to an operator can have binders, in case the operator is some syntaxG-notation. For these binders, we have to create lambda-abstractions.5AgdaxTurn an operator application into abstract syntax. Make sure to record the right precedences for the various arguments.0 AgdaContent of interaction hole.0@Agda%Top-level declarations are always  (import|open)* -- a bunch of possibly opened imports module ThisModule ... -- the top-level module of this file 5Agda Arguments of 4Agda Arguments of >5Agda The concrete name of the module.Agda The abstract name of the module.AgdaThe module telescope.Agda*The code for checking the module contents.5Agda+The application pattern in concrete syntax.AgdaHead of application.AgdaArguments of application.000000 0 0 0 0 0000000000000000000000000000 0 0 00000 0 0000000000None"#$,.14568=>?@ACEPSX_` "]AgdaJAre we loading the interface for the user-loaded file or for an import?"^AgdaFor the main file.+In this case state changes inflicted by 0s are preserved."_AgdaFor an imported file.+In this case state changes inflicted by 0s are not preserved."`AgdaJIs the aim to type-check the top-level module, or only to scope-check it?"aAgdapScope checks the given module. A proper version of the module name (with correct definition sites) is returned.0XAgda'Some information about the source code.0ZAgda Source code.0[AgdaSource file type0\AgdaThe parsed module.0]AgdaThe top-level module name.0^Agda Computes a 0X record for the given file.0_Agda"Should state changes inflicted by 0s be preserved?0`Agda0Merge an interface into the current proof state.0dAgdaIf the module has already been visited (without warnings), then its interface is returned directly. Otherwise the computation is used to find the interface and the computed interface is stored for potential later use (unless the "] is "] 0V).0eAgdaType checks the main file of the interaction. This could be the file loaded in the interacting editor (emacs), or the file passed on the command line.4First, the primitive modules are imported. Then,  getInterface' is called to do the main work.If the "` is 0V, then type-checking is not performed, only scope-checking. (This may include type-checking of imported modules.) In this case the generated, partial interface is not stored in the state (n). Note, however, that if the file has already been type-checked, then a complete interface is returned.0fAgdaTries to return the interface associated to the given (imported) module. The time stamp of the relevant interface file is also returned. Calls itself recursively for the imports of the given module. May type check the module. An error is raised if a warning is encountered.'Do not use this for the main file, use 0e instead.0gAgdaSee 0f.0hAgdaA more precise variant of 0f[. If warnings are encountered then they are returned instead of being turned into errors.0iAgdaCheck if the options used for checking an imported module are compatible with the current options. Raises Non-fatal errors if not.0jAgdaxCheck whether interface file exists and is in cache in the correct version (as testified by the interface file hash).0kAgda6Try to get the interface from interface file or cache.0lAgda7Run the type checker on a file and create an interface.Mostly, this function calls 0s. But if it is not the main module we check, we do it in a fresh state, suitably initialize, in order to forget some state changes after successful type checking.0mAgdaFormats and outputs the Checking, Finished and "Loading " messages.0nAgdaDPrint the highlighting information contained in the given interface.0pAgda-Writes the given interface to the given file.0sAgdaTries to type check a module and write out its interface. The function only writes out an interface file if it does not encounter any warnings.IIf appropriate this function writes out syntax highlighting information.0wAgda8Collect all warnings that have accumulated in the state.0xAgdaExpert version of 0w; if isMain is a "]:, the warnings definitely include also unsolved warnings.0|AgdaReconstruct the ` (not serialized) from the a (serialized).0}AgdafBuilds an interface for the current module, which should already have been successfully type checked.0~Agda Returns (iSourceHash, iFullHash)0AgdauTrue if the first file is newer than the second file. If a file doesn't exist it is considered to be infinitely old. 0eAgdaThe path to the file.Agda7Should the file be type-checked, or only scope-checked?Agda"Information about the source code.0gAgda+Optional information about the source code.0hAgda+Optional information about the source code.0jAgdaModule name of file we process.AgdaFile we process.0kAgdaModule name of file we process.AgdaFile we process.Agda+Optional information about the source code.AgdaBool' is: do we have to merge the interface?0lAgdaModule name of file we process.AgdaFile we process.Agda+Optional information about the source code.AgdaBool' is: do we have to merge the interface?0mAgdaThe prefix, like Checking, Finished, Loading .AgdaThe module name.AgdaOptionally: the file name.0nAgdaThe corresponding file.0sAgdaThe file to type check.AgdaThe expected module name.Agda$Are we dealing with the main module?Agda+Optional information about the source code.0}Agda Source code.AgdaAgda file? Literate Agda file?Agda0 for the current module.AgdaOptions set in OPTIONS pragmas.4"]"_"^"`0W0V"a0R0S0U0T0X0Y0]0\0[0Z0^0_0`0a0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0040X0Y0]0\0[0Z0^"`0W0V"]"_"^0_0`0a"a0S0U0T0R0b0c0d0e0f0g0h0i0j0k0l0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~00&None"#$,.14568=>?@ACEPSX_`0AgdaMRecords already processed modules and maps them to an internal identifier.0AgdaSupply of internal identifiers.0AgdaEdges of dependency graph.0AgdaAInternal module identifiers for construction of dependency graph.0Agda Translate a   to an internal 0 . Returns True if the  d is new, i.e., has not been encountered before and is thus added to the map of processed modules.0Agda%Add an arc from importer to imported.0Agda4Recursively build import graph, starting from given Y. Modifies the state in 0 and returns the 0 of the Y.0AgdaEGenerate a .dot file for the import graph starting with the given YB and write it to the file specified by the command line option. 000000000000 000000000000'None"#$,.14568=>?@ACEPSX_`0Agda Converts the  and 1 fields to strings that are friendly to editors.0AgdaKChoose which method to use based on HighlightingInfo and HighlightingMethod0000(None"#$,.14568=>?@ACEPSX_`5Agda)Encode meta information into a JSON Value0Agda7Turns syntax highlighting information into a JSON value5Agda@Must contain a mapping for the definition site's module, if any.0Agda:Must contain a mapping for every definition site's module.00)None"#$,.14568=>?@ACEPSX_`ۏ5AgdaJShows meta information in such a way that it can easily be read by Emacs.0Agda Formats the 1 tag for the Emacs backend. No quotes are added.0AgdaDTurns syntax highlighting information into a list of S-expressions.5Agda@Must contain a mapping for the definition site's module, if any.0Agda:Must contain a mapping for every definition site's module.0000*None"#$,.14568=>?@ACEPSX\_` 0Agda A subset of 0.0AgdaYModifier for interactive commands, specifying whether safety checks should be ignored.0Agda8Ignore additional checks, like termination/positivity...0AgdaDon't ignore any checks.0AgdakModifier for the interactive computation command, specifying the mode of computation and result display.0Agda[Modifier for interactive commands, specifying the amount of normalization in the output.0AgdaParses an expression.0AgdaOAfter a give, redo termination etc. checks for function which was complemented.0AgdaTry to fill hole by expression.LReturns the given expression unchanged (for convenient generalization to 0).0Agda!Try to refine hole by expression e.)This amounts to successively try to give e, e ?, e ? ?3, ... Returns the successfully given expression.0Agda9Evaluate the given expression in the current environment 0AgdagetSolvedInteractionPoints TrueP returns all solutions, even if just solved by another, non-interaction meta. getSolvedInteractionPoints False5 only returns metas that are solved by a non-meta.0AgdaReturns the type of the expression in the current environment We wake up irrelevant variables just in case the user want to invoke that command in an irrelevant context.0AgdaThe intro tactic.Returns the terms (as strings) that can be used to refine the goal. Uses the coverage checker to find out which constructors are possible.0Agda\Runs the given computation as if in an anonymous goal at the end of the top-level module.+Sets up current module, scope, and context.0Agda Parse a name.0Agda8Check whether an expression is a (qualified) identifier.0Agda3Returns the contents of the given module or record.0Agda4Returns the contents of the given record identifier.0Agda)Returns the contents of the given module.0AgdaSkip safety checks?AgdaHole.AgdaThe expression to give.Agda9If successful, the very expression is returned unchanged.0AgdaSkip safety checks when giving?AgdaHole.Agda'The expression to refine the hole with.Agda"The successfully given expression.0Agda"How should the types be presented?AgdaThe range of the next argument.AgdaThe module name.AgdafModule names, context extension needed to print types, names paired up with corresponding types.0Agda!Amount of normalization in types.Agda%Expression presumably of record type.AgdaPModule names, context extension, names paired up with corresponding types.0Agda!Amount of normalization in types.Agda Module name.AgdaPModule names, context extension, names paired up with corresponding types.I0000000000000000000000000000000000000000000000000000000000000000000000000I0000000000000000000000000000000000000000000000000000000000000000000000000+None"#$,.14568=>?@ACEPSX_` 00,None"#$,.14568=>?@ACEPSX\_` 0AgdaLookup the clause for an interaction point in the signature. Returns the CaseContext, the previous clauses, the clause itself, and a list of the remaining ones.0AgdaSParse variables (visible or hidden), returning their de Bruijn indices. Used in 0.0Agda&Entry point for case splitting tactic.0AgdaGMake the given pattern variables visible by marking their origin as  and pattern origin as = in the /F.0Agda2Make clause with no rhs (because of absurd match).0Agda*Make a clause with a question mark as rhs.0AgdaThe function name.Agda-The telescope of the clause we are splitting.Agda,The hole of this function we are working on.AgdaThe range of this hole.Agda9The words the user entered in this hole (variable names).AgdayThe computed de Bruijn indices of the variables to split on, with information about whether each variable is in scope.0000000000000000-None"#$,.14568=>?@ACEPSX_` .1111111 1 1111 1 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-.111111 1 1 11111 1 1111111111111111111 1!1"1#1$1%1&1'1(1)1*1+1,1-.None"#$,.14568=>?@ACEPSX_` 1AAgdaThe interaction loop.1CAgdaSet  to  optInputFile.1SAgda>The logo that prints when Agda is started in interactive mode.1TAgdaThe help message1:1;1>1=1<1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T1;1>1=1<1:1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1O1P1Q1R1S1T/None"#$,.14568=>?@ACEPSX_` +1YAgda6Result type: Progress & potential Message for the user:The of the Auto tactic can be one of the following three: Solutions [(ii,s)] A list of solutions s for interaction ids ii. In particular,  Solutions [] means Agsy found no solution. FunClauses cs0 A list of clauses for the interaction id ii? in which Auto was invoked with case-splitting turned on. Refinement s+ A refinement for the interaction id ii in which Auto was invoked.1]Agda#Entry point for Auto tactic (Agsy).If the  autoMessage part of the result is set to Just msg, the message msg2 produced by Agsy should be displayed to the user.5Agda[Names for the equality reasoning combinators Empty if any of these names is not defined.5AgdaTemplates for error messages 1U1V1W1X1Y1Z1[1\1] 1]1U1V1W1X1Y1Z1[1\0None"#$,.14568=>?@ACEPSX_` .1kAgda4Copy pasted from MAlonzo.... Move somewhere else!1lAgda$Sets up the compilation environment.1^1`1_1a1b1c1d1e1f1g1h1i1j1k1l1m1^1`1_1a1b1c1d1e1f1g1h1i1j1k1l1m1None"#$,.14568=>?@ACEPSX_` 9 1rAgda Classify FOREIGN Haskell code.1sAgda3A pragma that must appear before the module header.1tAgda@An import statement. Must appear right after the module header.1uAgda1The rest. To appear after the import statements.1vAgda GHC backend translation pragmas.1yAgda'@COMPILE GHC X = data D (c | ... | c )1zAgda COMPILE GHC x as f1AgdaGet content of  FOREIGN GHC pragmas, sorted by 1r2: file header pragmas, import statements, rest.1Agda Classify a  FOREIGN GHC declaration.1AgdaIClassify a Haskell pragma into whether it is a file header pragma or not.1AgdaPartition a list by 1r attribute.1r1u1t1s1v1z1y1x1w1{1|1}1~11111111|1{1v1z1y1x1w1}1~11111r1u1t1s1112None"#$,.14568=>?@ACEPSX_` >^1Agda0Name for definition stripped of unused arguments1Agda:Can the character be used in a Haskell module name part (conidJ)? This function is more restrictive than what the Haskell report allows.11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111113None"#$,.14568=>?@ACEPSX_` G1AgdayHaskell module names have to satisfy the Haskell (including the hierarchical module namespace extension) lexical syntax: 4modid -> [modid.] large {small | large | digit | ' }1C is an injective function into the set of module names defined by modid. The function preserves .Ds, and it also preserves module names whose first name part is not 1.3Precondition: The input must not start or end with ., and no two .s may be adjacent.114None"#$,.14568=>?@ACEPSX_` H1111111111115None"#$,.14568=>?@ACEPSX_` L1Agda7Check that the main function has type IO a, for some a.1Agda,Haskell modules to be imported for BUILT-INs1Agda)Definition bodies for primitive functions 1111111111 11111111116None"#$,.14568=>?@ACEPSX_` M111111117None"#$%,.14568=>?@ACEPSX_` /5Agda%The number of the current code block.5AgdaThe current column number.5AgdaQAll alignment columns found on the current line (so far), in reverse order.5AgdajAll alignment columns found in previous lines (in any code block), with larger columns coming first.5Agda(The next indentation column identifier.5Agda5Indentation columns that have actually been used.5Agda!Count extended grapheme clusters?5Agda"Alignment and indentation columns.5AgdaThe column's code block.5AgdaThe column number.5AgdaThe column kind. 3 for alignment columns and 3 i for indentation columns, where i$ is the column's unique identifier.5Agda+Unique identifiers for indentation columns.5Agda Column kinds.5AgdanUsed only for indentation (the placement of the first token on a line, relative to tokens on previous lines).6Agda,Used both for indentation and for alignment.6Agda Output items.6AgdaA piece of text.6AgdaA column. If it turns out to be an indentation column that is not used to indent or align something, then no column will be generated, only whitespace (6).6AgdaThe LaTeX monad is a combination of ExceptT, RWST and IO . The error part is just used to keep track whether we finished or not, the reader part isn't used, the writer is where the output goes and the state is for keeping track of the tokens and some other useful info, and the I/O part is used for printing debugging info.6Agda+Says what debug information should printed.6AgdaRun function for the LaTeX monad.6AgdaGives the size of the string. If cluster counting is enabled, then the number of extended grapheme clusters is computed (the root locale is used), and otherwise the number of code points.6 Agda-Does the string consist solely of whitespace?6 Agda6Is the character a whitespace character distinct from '\n'?6 AgdaOReplaces all forms of whitespace, except for new-line characters, with spaces.6 AgdaIf the 6 g consists of spaces, the internal column counter is advanced by the length of the token. Otherwise, 6  is a no-op.6AgdaMerges 5 into 5 , resets 5 and 56Agda=Registers a column of the given kind. The column is returned.6AgdaERegisters the given column as used (if it is an indentation column).6Agda0Alignment column zero in the current code block.6Agda-Registers column zero as an alignment column.6AgdaFChanges to the state that are performed at the start of a code block.6AgdaDChanges to the state that are performed at the end of a code block.6AgdaVA command that is used when two tokens are put next to each other in the same column.6AgdaThe column's name.QIndentation columns have unique names, distinct from all alignment column names.6Agda#Opens a column with the given name.6AgdaOpens the given column.6AgdaDOpens a special column that is only used at the beginning of lines.6AgdaiOpens the given column, and inserts an indentation instruction with the given argument at the end of it.6Agda,Deals with markup, which is output verbatim.6Agda2Deals with literate text, which is output verbatim6AgdaZDeals with code blocks. Every token, except spaces, is pretty printed as a LaTeX command.6AgdaEscapes special characters.6AgdaEvery element in the list should consist of either one or more newline characters, or one or more space characters. Two adjacent list elements must not contain the same character.rIf the final element of the list consists of spaces, then these spaces are assumed to not be trailing whitespace.6AgdaSplit multi-lines string literals into multiple string literals Isolating leading spaces for the alignment machinery to work properly1Agda/Generates a LaTeX file for the given interface.The underlying source file is assumed to match the interface, but this is not checked. TODO: Fix this problem, perhaps by storing the source code in the interface.6 Agda&Transforms the source code into LaTeX.6!Agda!Count extended grapheme clusters?6Agda!Indentation instruction argument.6 Agda!Count extended grapheme clusters?6"Agda!Count extended grapheme clusters?118None"#$,.14568=>?@ACEPSX_` 6#AgdaPosition, Contents, Infomation6$AgdadGenerates HTML files from all the sources which have been visited during the type checking phase.VThis function should only be called after type checking has completed successfully.1Agda!The name of the default CSS file.6%Agda6The directive inserted before the rendered code blocks6&Agda#Determine how to highlight the file6'Agda&Determine the generated file extension1Agda-Prepare information for HTML page generation.The page generator receives the output directory as well as the module's top level module name, its source code, and its highlighting information.6(Agda;Converts module names to the corresponding HTML file names.1AgdaAGenerates a highlighted, hyperlinked version of the given module.6)AgdaAttach multiple Attributes1Agda+Constructs the web page, including headers.1Agda'Constructs token stream ready to print.1Agda(Constructs the HTML displaying the code.6$AgdaOutput directoryAgdaSource file typeAgdaReturn value of 6&Agda*Output file extension (return value of 6')AgdaHighlighting information1AgdaPage generator.1AgdaPage renderer.AgdaOutput file extension.Agda&Directory in which to create files.AgdaModule to be highlighted.1AgdaURL to the CSS file.AgdaWhether to reserve literateAgdaModule to be highlighted.1AgdaThe contents of the module.AgdaHighlighting information.1Agda+Whether to generate non-code contents as-isAgdaSource file type11111111111111None "#$&',-.14568=>?@ACEHPSUVX_` & 1Agda0Optional version information to be printed with  --version.1AgdaDefault options1Agda_Backend-specific command-line flags. Should at minimum contain a flag to enable the backend.1Agda%Unless the backend has been enabled, runAgda- will fall back to vanilla Agda behaviour.1AgdaDCalled after type checking completes, but before compilation starts.1Agda3Called after module compilation has completed. The IsMain argument is NotMain if the  --no-main flag is present.2AgdaBCalled before compilation of each module. Gets the path to the .agdai_ file to allow up-to-date checking of previously written compilation results. Should return Skip m# if compilation is not required.2Agda;Called after all definitions of a module has been compiled.2AgdaCompile a single definition.2AgdaTrue if the backend works if --only-scope-checking is used.6*AgdaPBackends that are not included in the state, but still available to the user.e2   w x y z { | } ~              ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m:!      "#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123546789:;<=>DFCGE?@ABHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<H=>?@ABCDEFGIJKLMNOPQRSUTVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """""""""""""""""""""""""""""""""""""""""""""""""#{#|#}#~$$$$$$$$$%%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{/1^1_1`1111111111112222222e211111111122221111^1_1`:/222None"#$,.14568=>?@ACEPSX_`!_R"\AgdaPrint open metas nicely.2 AgdaAvailable backends.2AgdaThe 2 monad. 4d! state holds the remaining input.2Agda<Used to indicate whether something should be removed or not.2Agdacmd_load m argv loads the module in file m , using argv as the command-line options.2Agdacmd_compile b m argv compiles the module in file m using the backend b, using argv as the command-line options.2AgdaaShow unsolved metas. If there are no unsolved metas but unsolved constraints show those instead.2AgdaeShows all the top-level names in the given module, along with their types. Uses the top-level scope.2Agda^Shows all the top-level names in scope which mention all the given identifiers in their type.2AgdaVSolve (all goals / the goal at point) whose values are determined by the constraints.2!Agda4Solve (all goals / the goal at point) by using Auto.2#AgdanParse the given expression (as if it were defined at the top-level of the current module) and infer its type.2$Agda{Parse and type check the given expression (as if it were defined at the top-level of the current module) and normalise it.2%Agda!cmd_load_highlighting_info source: loads syntax highlighting information for the module in source<, and asks Emacs to apply highlighting info from this file.If the module does not exist, or its module name is malformed or cannot be determined, or the module has not already been visited, or the cached info is out of date, then no highlighting information is printed.RThis command is used to load syntax highlighting information when a new file is opened, and it would probably be annoying if jumping to the definition of an identifier reset the proof state, so this command tries not to do that. One result of this is that the command uses the current include directories, whatever they happen to be.2&AgdaITells Agda to compute token-based highlighting information for the file.KThis command works even if the file's module name does not match its location in the file system, or if the file is not scope-correct. Furthermore no file names are put in the generated output. Thus it is fine to put source code into a temporary file before calling this command. However, the file extension should be correct.If the second argument is 2J, then the (presumably temporary) file is removed after it has been read.2'AgdalTells Agda to compute highlighting information for the expression just spliced into an interaction point.2(Agda5Tells Agda whether or not to show implicit arguments.2)Agda%Toggle display of implicit arguments.2*Agda Goal commandsIf the range is B, then the string comes from the minibuffer rather than the goal.22AgdamGrabs the current goal's type and checks the expression in the hole against it. Returns the elaborated term.23Agda&Displays the current goal and context.24Agda&Displays the current goal and context and# infers the type of an expression.25AgdaPGrabs the current goal's type and checks the expression in the hole against it.26AgdamShows all the top-level names in the given module, along with their types. Uses the scope of the given goal.2;Agda$Displays version of the running Agda2<AgdaAbort the current computation..Does nothing if no computation is in progress.2=AgdaAn interactive computation.2>AgdaCommand queues.2@AgdaCommands that should be processed, in the order in which they should be processed. Each command is associated with a number, and the numbers are strictly increasing. Abort commands are not put on this queue.2AAgdaWhen this variable is set to Just nQ an attempt is made to abort all commands with a command number that is at most n.2BAgdaIOTCM commands.2CAgdaA generalised command type.2DAgda A command.2EAgdaStop processing commands.2FAgda8An error message for a command that could not be parsed.2GAgda4Monad for computing answers to interactive commands.2G is  y extended with state 2I.2IAgda.Auxiliary state of an interactive computation.2KAgdaThe interaction points of the buffer, in the order in which they appear in the buffer. The interaction points are recorded in  theTCState, but when new interaction points are added by give or refine Agda does not ensure that the ranges of later interaction points are updated.2LAgdaThe file which the state applies to. Only stored if the module was successfully type checked (potentially with warnings). The E is the modification time stamp of the file when it was last loaded.2MAgda*Reset the options on each reload to these.2NAgdaWe remember (the scope of) old interaction points to make it possible to parse and compute highlighting information for the expression that it got replaced by.2OAgdaThe command queue.*This queue should only be manipulated by 2b and 2a.2PAgda#Initial auxiliary interaction state2QAgda Restore both  | and 2I.2RAgdaRestore  |, do not touch 2I.2SAgdaBuild an opposite action to 6+ for state monads.2UAgda Opposite of 6, for 2G1. Use only if main errors are already catched.2VAgda?Lift a TCM action transformer to a CommandM action transformer.2WAgdaDitto, but restore state.2XAgda1Put a response by the callback function given by .2YAgda A Lens for 2K.2ZAgda A Lens for 2N.2^Agda*Do setup and error handling for a command.2`AgdaRun an 2) value, catch the exceptions, emit output!If an error happens the state of 2Gp does not change, but stPersistent may change (which contains successfully loaded interfaces for example).2aAgdalIf the next command from the command queue is anything but an actual command, then the command is returned.If the command is an 2f command, then the following happens: The given computation is applied to the command and executed. If an abort command is encountered (and acted upon), then the computation is interrupted, the persistent state and all options are restored, and some commands are sent to the frontend. If the computation was not interrupted, then its result is returned.2bAgdafCreates a command queue, and forks a thread that writes commands to the queue. The queue is returned.2cAgdaConverter from the type of 6- to 2O The first paramter is part of the error message in case the parse fails.2eAgdaDemand an exact string.2hAgdaTCan the command run even if the relevant file has not been loaded into the state?2iAgdaShould v& be issued after the command has run?2jAgdaInterpret an interaction2kAgda Show warnings2lAgdamSolved goals already instantiated internally The second argument potentially limits it to one specific goal.2mAgda"cmd_load' file argv unsolvedOk cmd loads the module in file file , using argv as the command-line options.\If type checking completes without any exceptions having been encountered then the command cmd r is executed, where r is the result of 0e.2nAgdaSet  to 2L , if any.2oAgda)A "give"-like action (give, refine, etc).*give_gen force ii rng s give_ref mk_newtxt acts on interaction point ii occupying range rng-, placing the new content given by string s, and replacing iiW by the newly created interaction points in the state if safety checks pass (unless force is applied).2qAgda/Sorts interaction points based on their ranges.2rAgda,Pretty-prints the type of the meta-variable.2sAgda5Pretty-prints the context of the given meta-variable.2tAgdaLCreate type of application of new helper function that would solve the goal.2uAgdaJDisplays the current goal, the given document, and the current context.Should not modify the state.2vAgdaKShows all the top-level names in the given module, along with their types.2wAgda^Shows all the top-level names in scope which mention all the given identifiers in their type.2xAgda"Explain why something is in scope.2yAgdaASets the command line options and updates the status information.2zAgda!Computes some status information.Does not change the state.2{Agda'Displays or updates status information.Does not change the state.2|Agda display_info does what  display_info' FalseA does, but additionally displays some status information (see 2z and 2{).2AgdaParses and scope checks an expression (using the "inside scope" as the scope), performs the given command with the expression as input, and displays the result.2AgdaLTell to highlight the code using the given highlighting info (unless it is Nothing).2Agda@Tells the Emacs mode to go to the first error position (if any).2AgdatNote that the grammar implemented by this instance does not necessarily match the current representation of ranges.2SAgdarunAgdaliftAgda(reverse lift in double negative position2TAgdarunAgdaliftAgda(reverse lift in double negative position2bAgdaReturns the next command.2mAgdaAllow unsolved meta-variables?Agda.Full type-checking, or only scope-checking?2oAgda Should safety checks be skipped?2sAgda Normalise?Agda$Print the elements in reverse order?2AgdaThe command to perform.Agda5The name to use for the buffer displaying the output.AgdaThe expression to parse.|"\22 2 2 2 2 222222222222<22222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2=2>2?2A2@2B2C2F2E2D2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~2222|"\22 2 2 2 2 222222222222<22222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425262728292:2;2=2>2?2A2@2B2C2F2E2D2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^2_2`2a2b2c2d2e2f2g2h2i2j2k2l2m2n2o2p2q2r2s2t2u2v2w2x2y2z2{2|2}2~22229None"#$,.14568=>?@ACEPSX_`!ev2Agda2@ is a fake ghci interpreter for both the Emacs the JSON frontend22:None"#$,.14568=>?@ACEPSX_`!j2Agda2 is a interpreter like  mimicGHCi#, but outputs JSON-encoded strings.2( reads Haskell values (that starts from IOTCMT ...) from stdin, interprets them, and outputs JSON-encoded strings. into stdout.6.AgdaCConvert Response to an JSON value for interactive editor frontends.22;None"#$,.14568=>?@ACEPSX_`!sn2Agda2P is a fake ghci interpreter for the Emacs frontend and for interaction tests.2c reads the Emacs frontend commands from stdin, interprets them and print the result into stdout.6/AgdakGiven strings of goals, warnings and errors, return a pair of the body and the title for the info buffer60AgdaFConvert Response to an elisp value for the interactive emacs frontend.61Agda Adds a "last" tag to a response.62Agda;Show an iteraction point identifier as an elisp expression.22None"#$,.14568=>?@ACEPSX_`!|}2Agda9Environment for naming of local variables. Invariant: reverse ccCxt ++ ccNameSupply2AgdaSupply of fresh names2AgdaNames currently in scope2Agda0This environment is no longer used for anything.2Agda.Initial environment for expression generation.2Agda%Term variables are de Bruijn indices.2Agda'Introduce n variables into the context.2AgdaNExtract Agda term to Haskell expression. Erased arguments are extracted as (). Types are extracted as ().2Agda%Is the type inductive or coinductive?8(22222222222222222222222222222222222222222222222222222228222222222222222222222222222222222(2222222222222222222222<None"#$,.14568=>?@ACEPSX_`!2Agda3Ensure that there is at most one pragma for a name.3Agda*Primitives implemented in the JS Agda RTS.,22222222222222222222222222222222222222233333,22222222222222222222222222222222222222233333=None"#$,.14568=>?@ACEPSX_`!:3AgdaThe main function3 AgdaJRun Agda with parsed command line options and with a custom HTML generator3 AgdaPrint usage information.3 AgdaPrint version information.3 AgdaWhat to do for bad options.3Agda6Run a TCM action in IO; catch and pretty print errors.3AgdaMain3 Agda8Backends only for printing usage and version informationAgdaHTML generating actionAgdaBackend interactionAgda program nameAgdaparsed command line options 33333 3 3 3 3 33 33333 3 3 3 3 3363rstruvrswrsxrsyrz{rz|rz}rz~rzrzrrurursrsD                                                            ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~                                                              G !"#$%&\'())*+,B@--./0123456789:;<=>?@ABCDEFGHIJKLMNNOOPQRSTUVKWXXYZ[\]^_`abcdeefghijkllmnopqrstuvwxyz{|}~ !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!"""""#"$"""%"&"'"(")"*"+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?$@$A$B$C$D$E$F$F$G$H$I$J$K$L$M$N%O%P%Q%R%S%T%U%V%W%X%X%Y%Z%[%\%]%^%^%_%`%a%b%c%%d%e%f%g%h%i%j%k%l%m%n%o%p&q&q&r&s&t&u'v'w'x'y'z'{'|'}'E'~''''''((((((((((((((((((((((((((())))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))**********++++,,,,,,, , , , - --------------------- -!."...Q.#.$.%.&.'.(.).*.+.,.-.../.0.1.2.3.4.5.6.789LMNOwxyz{}E~:;<=>?+@A/B/C/D/E/F/G/H/I/J//K/L/M/N/O//P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/i/j0k0k0l0m0m0n0o0p0q0r0s0t0u0v0w0x0y0z0{0|0}0~0000000000000000000000000011112222222222222222>3333C333333333333333333333333344444444444444444444444444444444444444444444444 4 4 4 4 4444444444444444444 4!4"4#4$4%4&4'4(4)4*4+4,4-4.4/404142434445464748494:4;4<4=4>4?4@4A4B4C4D4E4F4G4H4I4J4K5L5M5N5O5P5Q5R5S5T5U5V6W66X6Y6Z6[6\6]6^6_6`6a7Q7b7c8d8d8e8f8g88h8i8j8k8l8m8n8o8p8q8r9s9t9u9@9v9w9x9y9z9{9|9}:~:::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<==T==R======>>>>>>s>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>???????????????@@@ @ @ @ @ @@@@@@@@AAAAAAAAAAB B!BEBTB"B#B$B%B&B'B(B)B*B+,-./0123456789:;<=>?@ABCDEFGkHICJCJCKCLCMCNCOCPCQCRCSCTCUCVDWDXDYDZD[D\E]E^E_E`EaEEEbEbEcEdEeEfEgEfEhEiEjEkElEmEnEoEpEqErEsEtEuEvEwExEyEzF{F|F}F~FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF F F F F FFFFGGGGGGGGGGGGGGGG G!G"G#G$G%G&G'G(G)G*G+G,G-G.G/G0G1G2G3G4G5G6G7G8G9G:G;G<G=G>G?H@HAIBICIDIEIFIFIGIHIIIJIKILIMINIOIPIQIRISITIUIVIWIXIYIZI[I\I]I]I^I_I`IaIbIcIdIeIfIfIgIgIhIiIiIjIkIlImInIoIpIqIrIsItIuIvIwIxIyIzI{I|I}I~IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I !I "I #I $I %I &I 'I (I )I *I +I ,I -I .I /I 0I 1I 2I 3I 4I 5I 6I 7I 8I 9I :I ;I <I =I >I ?I @I AI BI CI DI EI FI GI HI II JI KI LI MI NI OI PI QI RI SI TI UI VI WI XI YI ZI [I \I ]I ^I _I `I aI bI cI dI eI fI gI hI iI jI kI lI mI nI oI pI qI rI sI tI uI vI wI xI yI zI {I |I }I ~I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I !I "I #I $I %I &I 'I (I )I *I +I ,I -I .I /I 0I 1I 2I 3I 4I 5I 6I 7I 8I 9I :I ;I <I =I >I ?I @I AI BI CI DI EI FI GI HI II JI KI LI MI NI OI PI QI RI SI TI UI VI WI XI YI ZI [I \I ]I ^I _I `I aI bI cI dI eI fI gI hI iI jI kI lI mI nI oI pI qI rI sI tI uI vI wI xI yI zI {I |I }I ~I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I I J J J J J J J J J J J J J J J J J J J J J J J J J J KK K K K K K K KCKKKKKKK K K K L L L L LlLlL L L L L L L L L L L L L L.L L L L L@LBL L L4L L L L6L L LL L L L L L L L L L L L L L L L L L L L L L MM M M MM M M M MM M M M M MM M N N N>NN N N N N N N N N N N N N N N N N OLO O O O O O O O O O O O O O O O O O !O "O "O #O $O %O &O 'O (O )O *O +O ,O -O .O /O 0O 1O 1O 2O 3O 4O 5O 6O 7O 8O 9O :O.O3O ;O <O =O >O ?O @O AO BO =O CO DOGO EO/OO FO>O GO HO IO JO KO LO MO NO OO PO PO QO RO SO TO UO VO VO WO XO YOkO ZO [O \O ]O ^O _O `O aO bO cO dO eO fO gO hO iO jO kO lO mO nO oO pO qO rO sO tO uO uO vO wO xO yO zO {O |O }O ~O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O PP P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P P Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q !R "R #R $R %R &R 'R (R )R *R +R ,R -R .R /R 0R 1R 2R 3R 4R 5R 6R 6R 7R 8R 9R :R ;R <R =R >R ?R @R AR BR CR DR ER FR GR HR IR JR KR LR MR NR OR PR QR RR SR TR UR VR WR XR YR ZR [R \R ]R ^R _R `R aR bR cR dR eR fS gS hS iS jS kS lS mS mS nS oS pS qS rS sS tS uS vS wS xS yS zS zS {S |S }S ~S S S S S S S S S S S S SS S S S SCS S S S S S S S S S S S S S S S S S S S S S S S S S S SSSS S S S T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T T U U U U U U U U U U U U U U U U U U\U'U\U U U XU$U$U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U U UsU U U U U U U U U U !U "U #U $U %U &U 'U (U )U *U +U ,U -U .U /U 0UtU 1V 2V 3V 4V 3V 5V 6V 7V 8W 9W :W ;W <W =W >W ?W @W AW BW CW DW EW FW GW HW IW JW KW LW MX NX OX PX QX RX SX TX UX)X VX WX XX XX YX ZX\X\X [X \X$X$X X ]X ^X _X `X aX bX cX dX eX fX gX hX iX jX kX lX mX nX oX pX qX rX X sX tX X uX X vX wX X X X X X X X X "X X %X xX XsX yX zX {X |X }X ~X X X X X X X X X !X X X 1XtX X X X X X X X X X /XqXrX X 0X X X X X X X X Y*Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y YpY Y Y ZZ Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ZZZZZZZZZZ Z Z Z Z ZZZZZZZZZZZZZZZ[[[[ [!["[#[ J[ J[$[%[&['[([)[*[+[ =[,[-[.[G[[/[0[ L[[ ;[/[ <[ =[1[0[ V[ V[1[2[3[ [ [4[5[6[7[8[9[:[;\<\=\>\?\@\A\B\C\D\E\F\G\H\I\&\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z\[\\\]\^\_\`\a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z\{\|\}\~\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH@HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH H H H H HHHHHHHH]]]]]]]]]]]]]]]] ]!]"]#]$^%^%^&^'^(^)^)^*^+^,^-^-^.^/^0^1^1^2^'^^3^4^5^6^7^8^9^:^;^<^=^>^?^@^A^B^C^^^^D^^E^^^^F^G^H^I^J^K^L^M^N^^O^P^Q^R^S^T^U^V^W^X^Y^Z^[^\^]^^^_^`^a^b^c^d^e^f_g_g_h_i_j_k_l_m_n_o_p_q_r_s_t_u_v_w_x_y_y_z_{_|_}_~_____)___1______D__________________________________________________________________________________``````````````````````````````````````````````aaa a a a ala aaaaaaaaaaaaaaaaaaa a!a"a#a$a%a_a&a'a(a)aAaa*a aqa+aha,a-aga.a/a0a Oa#a1a2a3ala4a5a a6a7a8a9a8a:a;aRaLaUaWa<a<a=a=a>a?a@aAaBaCaDaEaFaGaHaIaIaJaKaLaMaNaOaPaQaRaSaTaUaVaXaXaWaXaYaZa[a\a a]a^a_a`aaabacadaeafagahaia%ajakalamanaoapaqara*asa'a)atauavawaxa%a1ayaaza3a{a|a}a~a ;aaaa <a Caaaaaa5aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa{aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa a a a a aaaaaaaaaaaaabbbbbbbbb b!b"b#b$b%b&b'b(b)b*b+b,b-b.b/b0b1b2b3b4b5b6b7b8b9b:b;b<b=b>b?b@bAbBbCbDbEbFbGbHbIbJbKbLbMbNb bObPbQbRbSbTbUbVbWbXbYbZb[b\b]b^b_b`bab7bbbcbdckcbcecfc2cgchcicjckclcmcncocpcqc1crcsctcucvc)cwc =cxcyczc{c|c}c~cc_c&ccccccccccccccccdddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeCeeeeeeeeeeeefffffffffffffffffffffffffffffgggggggggggggggggg g h h h h hhhhhhhhhhhhhhhhhhhhhhhh h!h"h#h$h%h&h'h(hkh)h Nh Mh'h*hlh Oh#hqh+h0h,h hdh@h-h&h.h$h h/h h0hh1h2h3h4h5h6h7h8h9h:h;h<h=h>h?h@hAhBhChDhEhFhGhHhIhJhKhLhMhNhOhPhQhRhShThUhVhWhXhYiZi[i\i]i^i_i_i`iaibicidieifigihiiijikiliminioipiqirisiti*iuiviwixiyizi{i|i}i~iiiiiiiiijjjjjjjjjjjjjjjjjjjjjjjkkkkkkkkkk[lllllllllllllllllllllllllllllllllllllllll llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll l l l l lllllllllllllllllll l!l"l#l$l%l&l'l(l)l*l+l,l-l.l/l0l1l2l3l4l5l6l7l8l9l:l;l<l=l>l?l@lAlBlClDlElFlGlHlIlJlKlLlMlNlOlPlQlRlSlTlUlVlWlXlYlZl[l\l]l^l_l`lalblcldlelflglhliljlklllmlnlolplqlrlsltmumvmwnxnxnynznzn{n|n}n~nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnoIoo8ooooooooooooooooooooooooooooo o o o o ooooooooooooooppppp0p p!p"p#p$p%p&p'p(p)p*p+p,p-p.p/p0p1p2p3p4p5p6p7p8p9q:q:q;q<q<q=q>q?q@qAqBqAqCqDqEqqqqFqGqHqIqJqKqLqMqNqOqPqQqRqSqTqUqVqWqXqYqZq[q\q]q^r_r_r`rartrbrcrdr;rrrrrZrerfrgrhrirjrkrlrmsnsospsqtrtstttutvtwtwtxtytzt{t|t}t~ttttttuuuuu$uuuuuuuuuuvvwwwwwwwwwwwwwwwwwxxxyyyyyzzzzzzzzzzzzz{{{{{{{{{{{{wwxx||||||||||||||||||||||||||||||||||||||||||||||| $||||||||||||||%||(|'|&|)|+||||||| | | | | ||| J| J|||||||||||||||||||| |!|"|#|$|%|&|'|(|)| |t|*| =|G||+|,|-|.|/|0|1|Z|2|3|4|5|6|7|G|8|9|:|;| V| V|<|=|>|?|1|2|3| |@|A|B||/| ;|1| L|0| <| =|t|C||D|E|F|G|H|I|I|J|K|L|M| |N|O|P|Q|R|S|T|U|V|W|X|Y|Z|[|\|]|^|_|`|a|b|c|d|e|f| |g|h|i|j|k|l|m|n||o|p|q|r|s|t|u|v|w|x|y|z|{|||}|~|||||||||||||||||||||||||6|||||||||||||||||||||||||||||||||||||||||||||||||||||||5||||||||||||||||9||||||||:||||||||||||||||||||||||8|||||||||||||||| | | | | |||||||||||||}}}}}} }!}"}#~$~%~&~'~(~)~*~+~,~-~.~/~0~1~2~3~4|567899:;<=>?@ABBCDEFGGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~~NMLK  g Ub77      !"#$%&'()*+,-./0123456789:;<<=>?@ABCDEFGHIJKLMNOP Q%(&+rs'*)RtuwJSKLMNOPRSTXXTUVVWXYIIHZ[\]^_`ab Jcdefg JhijkllmnoppqrstuvZ]\ ecd' N7wxyz{| }"#$RLW~%"&'#- 2 1)45"x/ L@0,01y3| ; < C5  dY b U[       !"#$%&'()*+,-./012345678W9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZZ[\]^_`abcdefghijklmnopqrstuvwxyz{|Y}~01 *6C J J "     !"#$%&'()*+,-./01823456789:;<=>?@ABCDEFFGHCI JKLMNOPQR|>?@ANMLK  STcdfghijklmnopqrstz{UVWWXYZ[11\]^_2`abcdetfghijklmnopqrst uvwxyz{67|}~     VVVV V!V"V#V$V%V&V'V(V)V)V*V+V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V2V;V<V=V>V?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV jVVVVV V V V V V VVVVVVVVVVVVVVV 7VVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;V<V=V>V?V@VAVBVCVDVEVFVGVHVIVJVJVKVLVMVMVNVOVPVQVRVSVTVUVVVWVaVXVYVZV\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuV~VvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"VVVV*V MVqV NV#VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV V V V V V VVVVVVVVVVVVVV?VVVVVVV V!V"V#V$V%V&V'V(V)V*V+VVV,V-V.V/V0V1V2V3V4V5V6V6V7V8V9V:V;V<V<V=V>V?V@VAVBVBVCVDVEVVVFVGVHVIVJVJVKVLVLVMVNVOVPVQVRVSVSVTVUVVV1VWVXVYVZVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhVhViVjVkVlVmVnVoVpVqVrVsV1VtVuVvVwVxVyVzV{V|V}VV~VVVVVVVVVVVVVVVVVVVV`VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV\VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVV V V V V VVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;V<V=V>V?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV VVVVVVVVVVV V V V V VVVVVVVVVVVVVVVVVVVV V!V"V#V$V%V&V'V(V)V*V+V,V-V.V/V0V1V2V3V4V5V6V7V8V9V:V;V<V=V>V?V@VAVBVCVDVEVFVGVHVIVJVKVLVMVNVOVPVQVRVSVTVUVVVWVXVYVZV[V\V]V^V_V`VaVbVcVdVeVfVgVhViVjVkVlVmVnVoVpVqVrVsVtVuVvVwVxVyVzV{V|V}V~VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVHVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV;VVVVVVyV V V V V VVVVVVVVVVVV !"RV##$%&'()*+,--../0123456789:;<=>?@ABCCDEFtGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                           ! " # $ % &^a ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ Ar B C_ D E F G H I J K L M N N O P Q R S T U V W X Y Z [ \ ] ^ _ ` a b c d e f g h i j k l m n o p q r s t u u v w x y z { | } ~            !!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6!7!8!9!:!;!<!=!>!?!@!A!B!C!D!E!F!G!H!I!J!K!L!M!N!O!P!Q!R!S!T!U!V!W!X!Y!Z![!\!]!^!_!`!a!b!c!d!e!f!g!h!i!j!k!l!m!n!o!p!q!r!s!t!u!v!w!x!y!z!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"""""""""" " " " " """"""""""""""""""" "!"""#"$"%"&"'"(")"*"+","-"."/"0"1"2"3"4"5"6"7"8"9":";"<"=">"?"@"A"B"C"D"E"F"G"H"I"J"K"L"M"N"O"P"Q"R"S"T"U"V"W"X"Y"Z"["\"]"^"_"`"a"b"c"d"e"f"g"h"i"jo"k"l"m"n"o"p"q"r"s"t"u"v"w"w"x "y"y"z"z"{"{"|"}"~""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""########## # # # # ################### #!#"###$#%#&#'#(#)#*#+#,#-#.#/#0#1#2#3#4#5#6#7#8#9#:#;#<#=#>#?#@#A#B#C#D#E#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#V#W#X#Y#Z#[#\#]#^#_#`#a#b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#t#u#v#w#x#y#z#{#|#}#~#################################################################################### ##############################################$$$$$$$$$$ $ $ $ $ $$$$$$$=$$$$$$$$$$$$ $!$"$#$$$%$&$'$($)$*$+$,$-$.$/$0$1$2$3$4$5$6$7$8$9$:$;$<$=$>$?$@$A$B$C$D$E$F$G$H$I$J$K$L$M$N$O$P$Q$R$S$T$U$V$W$X$Y$Z$[$\$]$^$_$`$a$b$c$d$e$f$g$h$i$j$k$l$m$n$o$p$q$r$s$t$u$v$w$x$y$z${$|$}$~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$!$ $##=$$$$$$$$$$$N$$$$$$$$$$$$$$$$$$$$$$%%%%%%%%%% % % % % %3%%%%%%%%%%%%s%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%x%y%z%{%|%}%~%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&&&&&&&&&& & & & & &&&&&&&&&&&&&&&&&&& &!&"&#&$&%&&&'&(&)&*&*&+&,&-&.&/&0&1&2&3&4&5&6&7&8&9&:&;&<&=&>&?&@&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&XN&Y&Z&[&\&]&^&_&`&a&b&c&d&e&f&g&h&i&j&k&l&m&n&o&p&q&r&s&t&u&v&w&x&y&z&{&|&}&~&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&'''''''''' ' ' ' ' '''''''''''''''''''' ' &&&'!'"'#'$'%'&'''(')'*'+','-'.'/'0'1'2'3'4'5'6'7'8'9':';'<'='>'?'@'A'B'C'D'E'F'G'H'I'J'K'L'M'N'O'P'Q'R'S'T'U'V'W'X'Y'Z'['\']'^'_'`'a'b'c'd'e'f'g'h'i'j'k'l'm'n'o'p'q'r's't'u'v'w'x'y'z'{'|'}'~'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''(((((((((( ( ( ( ( ((((((((((((((((((( (!("(#($(%(&('((()(*(+(,(-(.(/(0(1(2(3(4(5(6(7(8(9(:(;(<(=(>(?(@(A(B(C(D(E(F(G(H(I(J(K(L(M(N(O(P(Q(R(S(T(U(V(W(X(Y(Z([(\(](^(_(`(a(b(c(d(e(f(g(h(i^(j(k(l(m(n(o(p(q(r(s(t(u(v(wp(x(y(z({(|(}(~(((((N(((((( ((((((((((((((((((((((((((((((((((((((((((((((((((((--t((((((((((((((((((((((1((((((((((((((((((((((((((((((('a((((cdfe((((((((((((()))))))))) ) ) ) ) ))))))))))))))))))) )!)")#)$)%"y)&)')()))*)+),N)-).)/)0)1)2)3)4)5)6)7)8)9):);)<)=)>)?)@)A)B)C)D)E)F)G)H)I)J)K)L)M)N)O)P)Q)R)S)T)U)V)W)X)Y)Z)[)\)])^)_)`)a)b)c)d)e)f)g)h)i)j)j)k)l)m)n)o)p)q)r)s)t)u)v)wN$$)x)y)z){)|)|)})~))))))))))!!))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))********** * * * * ****************&**** *!*"*#*$*%*&*'[Z*(*)***+*,*-*.*/*0*1*2*3*4*5*6*7*8*9*: *; *<  *= *> *? *@ *A *B *C *D *E *F *G *H *I *J *K *L *M *N *O *O *P k k *Q *R *S *T *T *U *V *W *X *Y *Z *[ *\ *] *^ *_ *` *a *b *c *d *e *f *g *h *i *j *k *l *m *n *o *p *q *r *s *t *u *v *w *x *y *z *{ *| *} *~ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  * *++++++++++ + + + + ++++++++++++++++++++ +!+"+#+$+%+&+'+(+)+*+++,+-+.+/+0+1+2+3+4+5+6+7o+8+9+:+;+<+=+>+?+@+A+B+C+D+E+F+G+H+I+J+K+L+M+N+O+P+Q+R+S+T+U+V+W+X+Y+Z+[+\+]+^+_+`+at+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+s+t+u+v+w+x+y+z+{+|+}+~++++++++++++++++++++++ ++++++++++++++++++++N++++++++++++++++++++++++++++++++++++++++'g'g++++++++++++++++++++++++++++++++++++++++++$+++++++++,,,,,,,, D,, , , , , ,,,,,,,,,,,,,,,,,,,, ,!,",#,$,%,&,',(,),*,+,,,-,.,/,0,1,2,3,4,5,6,7,8,9,:,;,<,=,>,?,@,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,[,\,],^,_,`,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,r,s,t,u,v,w,x,y,z,{,|,},~,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,---------- - - - - ------------------- -! -" -# -$ && &' &( &) -% -& -' -( -) -* -+ -, -- -. -/ -0 -1 -2 -3 -4-5-6-7-8-9-:-;-<-=->-?-@-A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X!-Y!-Z!-[!-\!-]!-^!-_!-`!-a!-b!-c!-d!-e!-f!-g!-h!-i!-j!-k!-l!-m!-n!-o!-p!-q!-r!-s!-t!-u!-v!-w!-x!-y!-z"-{"-|"-}"-~"-"-"-#-$-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%&%&%-%-%-%%-%-%-%&%&%-%&%-%-%-%&%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%-%---------------------------------------------------------&-&-&-&.&.&.&.&.&.&.&.&.'. '. (. (. ). ).*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.*. *.!*."*.#*.$*.%*.%*.&*.'*.(*.)*.**.+*.,*.-*..*./*.0*.1*.2*.3*.4*.5*.6*.7*.8*.9*.:*.;*.<*.=*.>*.?*.@*.A*.B*.C*.D*.E*.F*.G*.H*.I*.J*.K*.L*.M*.N*.O*.P*.Q*.R*.S*.T*]*.U*.V*.W*.X*.Y*.Z*.[*.\*.]*.^*._*.`*.a*.b*.c*.d*.e*.f+.g,.h,.i,.j,.k,.l,.m,.n,.o-.p-.q-.r-.s-V-V-.t-.u-.v-.w-.x-.y-.z-.{--.|-.|-.}-.~-.-.-.- -.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.--.-.-.-.-.-.-.-.-.-.-.-.-.-.-................j..........................3...,C......../././././././././.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.00.0.0.0.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2/2/2/2/2/2/2/2/2/2/ 2/ 2/ 2/ 2/ 2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/2/3/4/4/ 4/!4/"4 4/#4/$4 4 4 ~4/%4 4 4/&4/'4/(4/)4/*4/+4/,4/-4/.4//4/04/14/24 5/35/45/55/65/75/85/95/:5/;5/<6/=6/>6/?6/@6/A7/B7(7/C7/D7/E77/F7/G8/H8/I8/J8/K8/L8/M8/N/N /O/O/P/Q/R/S/T/U/V/W/X/Y/Z/[/\/]/^/_/`/a/b/c/d/e/f/g/h/h/i/j/k/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/{/|/}/~//////////////////////)7././////////////////$/////////////////////./////////]/////////////////////////////////9.:/:/:/:/:/:/;/+///////////////////////0000M000000 0 0 0 0 00000000000000<0<0<0<0<0<0 <0!<0"<0#<0$<0%<0&<0'<0(<0)<0*<0+<0,<0-<0.<0/<00<01<02<03</<04<05<06<07<08<0 <09<0:<0;<0<< Y<<0<0<0<0<0<0==0>=0?=0@=0A=0B=0C=0D=0E=0F=0G=0H0I0J0K0I0J+0L0M r0N0Or0N0P0I0J0Qr0N0Rr0N0Sr0Tr0Tr0Tr0U0Vrs0WrFI0X0Y0Z0X0[0\0X0]0^0X0]0X0]0_0X0]0`0X0]0a0X0]0b0X0]O0X0]0c0X0]0X0]0X0]0d0X0]0X0]0e0X0]0f0X0]0X0]0X0]0X0]0X0]0X0Y0X0Y0X0Y0X0Y0X0Y0g0X0Y0h0X0Y0i0X0Y0j0X0Y0k0X0Y0X0Y0X0Y0X0Y0X0Y0X0Y0X0Y0l0X0Y0X0Y0X0Y0X0Y0X0Yr0m4r0n0o0pr0q0rr0s0tr0s0ur0s0vr0s0wr0s0xr0s0yr0q0zr0q0{r0q0|"0}"0~"rCLr0rCOrCrCDrCNrCMrCrCrC00)0*0/0/00I0J00I00r00r0030300I0J03~303P30303030303030;0r00r000I00r000I00rs0r000I00r00r00A0A0A0A'A0A0A0A0A0A0A0A0A0r0n0A0A0A0A0A0A0A0A0A0A0B0B0r00C0000000000J0J0J0J0J0J0J0S00I00r00rs0^0r00r00r000I00r00rsrF0g0g0g0rs0h0rs0r0000000000000o0o0o0r00o0o0p0p0p0p0rs0r0v0v0v0v0v0v0v0v0v0z0z0z0r00{1{1{1{1{1{1{1{ O{1{1{) {1 {1 {1 {1 {1 {1{1{1{1{1{1{1{1{1{1{1{1w1w1w1x111)4)5^11 1!1"1#1$1%1&1'1(1)1*1+1,1-1.1/101112131415161718191:1;1<1=1>1?1@1A1B1C1D1E1F1G1H1I1J1K1L1M1N1)4)5^11OXZ[ee1Pe1Qe1Re1Se1Te1Ue1V1W1X1Y1Z1[1\1]1^1_1`1a1b1c1d1e1f1g1h1i1j1k1l1m1n1o1p1q1r 1s1t1u1v1w1x1yrs@1z1{1|1z1{1}1z1{1~111111111111111111111111#p#q1111111111111111111111111111111111111111111111111111111111111N111111111111 1 11111111111111111111111111111111,2222222222 2 2 2 2 2222222Nr222~&2222222222 2!2"2#2$2%2&2'2(2)2*2+2,2-2.2/202122232425,2627r28292:2;2<2=2>2?2@2A2B2C2D2E2F2G2H2I2J2K2L2M2N2O2P2Q2R2S2T2U2V2W2X2Y2Z2[2\2]2^({((2_2`2a2b2c2d2e2f2g2h2i2j2k2l(z2m2n2o2p2q2r2s2t2u$2v2w2x2y12z2{2|2}2`2~22222222/22220M2222222 2 2 &# 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 &u 2 2 2 2 2 2 2 2 2 +{ 2 2!2!2!2!2!2!2!2"2"2"2"2"2"2"2"2"2"2"2"2"2"2""2%2%2%2%2%2%2%-%2%-%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2%2(2)2/2/2727272727272727272727272717272727072727/d72727727272727<73737373737373737373 73 73 73 73 737&73737373738383838383838333 Hr33r33 :3!;3";3#;3$;3%3&!Agda-2.6.0-2SkZ65HA0oW2dV5p2oTsQPAgda.Utils.MonadAgda.Utils.FunctorAgda.Interaction.OptionsAgda.Utils.VarSetAgda.Utils.ExceptAgda.Utils.PrettyAgda.Utils.Maybe.StrictAgda.Compiler.BackendAgda.Interaction.Library.BaseAgda.Interaction.Options.IORefsAgda.Syntax.BuiltinAgda.Termination.CutOffAgda.Termination.SemiringAgda.Utils.AffineHoleAgda.Utils.BiMapAgda.Utils.CharAgda.Utils.EitherAgda.Utils.EnvironmentAgda.Utils.FloatAgda.Utils.Function"Agda.TypeChecking.SizedTypes.UtilsAgda.Utils.Graph.TopSortAgda.Utils.Haskell.Syntax Agda.Utils.IOAgda.Utils.IO.BinaryAgda.Utils.IO.UTF8Agda.Utils.IO.TempFileAgda.Utils.IORefAgda.Utils.ImpossibleAgda.Utils.EmptyAgda.Utils.BagAgda.ImpossibleTestAgda.Auto.NarrowingSearchAgda.Utils.IntSet.InfiniteAgda.Utils.LensAgda.Utils.IndexedListAgda.Auto.OptionsAgda.Utils.Lens.ExamplesAgda.Utils.MaybeAgda.Utils.ListT!Agda.Interaction.Options.WarningsAgda.Interaction.Options.HelpAgda.Utils.MemoAgda.Utils.MonoidAgda.Utils.NonemptyListAgda.Utils.NullAgda.Utils.Parser.ReadPAgda.Utils.PartialOrdAgda.Utils.POMonoidAgda.Utils.PointerAgda.Utils.Parser.MemoisedCPS#Agda.TypeChecking.SizedTypes.SyntaxAgda.Utils.SemiRingAgda.Utils.SingletonAgda.Utils.ClusterAgda.Utils.SizeAgda.Utils.SuffixAgda.Utils.ThreeAgda.Utils.TrieAgda.Utils.TupleAgda.Utils.MapAgda.Utils.ListAgda.Utils.StringAgda.Utils.TimeAgda.Interaction.Library.ParseAgda.Interaction.EmacsCommandAgda.Utils.FileNameAgda.Utils.HashAgda.Utils.BenchmarkAgda.Syntax.PositionAgda.Utils.PermutationAgda.Syntax.FixityAgda.Syntax.CommonAgda.Syntax.Parser.Literate+Agda.Syntax.Concrete.Operators.Parser.MonadAgda.Compiler.JS.SyntaxAgda.Compiler.JS.SubstitutionAgda.Compiler.JS.PrettyAgda.Auto.SyntaxAgda.Auto.SearchControlAgda.Auto.TypecheckAgda.Auto.CaseSplitAgda.Syntax.Parser.MonadAgda.Syntax.NotationAgda.Syntax.Concrete.NameAgda.TypeChecking.Monad.BaseAgda.Syntax.Concrete.AttributeAgda.Syntax.Abstract.NameAgda.Syntax.LiteralAgda.Syntax.TreelessAgda.Syntax.ReflectedAgda.Syntax.Parser.Tokens#Agda.Interaction.Highlighting.Range,Agda.Utils.Graph.AdjacencyMap.Unidirectional+Agda.TypeChecking.SizedTypes.WarshallSolver'Agda.TypeChecking.Positivity.OccurrenceAgda.Syntax.ConcreteAgda.Syntax.Concrete.PrettyAgda.BenchmarkingAgda.Syntax.Concrete.Pattern%Agda.Syntax.Concrete.Operators.ParserAgda.Syntax.Concrete.GenericAgda.Syntax.Concrete.Fixity%Agda.Interaction.Highlighting.PreciseAgda.Interaction.ResponseAgda.Utils.FavoritesAgda.Utils.AssocListAgda.Syntax.Scope.BaseAgda.Utils.GeniplateAgda.Syntax.InfoAgda.Termination.SparseMatrixAgda.Termination.OrderAgda.Termination.CallMatrixAgda.Termination.CallGraphAgda.Termination.TerminationAgda.Syntax.Parser.AlexAgda.Syntax.Parser.LookAhead!Agda.Syntax.Parser.StringLiteralsAgda.Syntax.Parser.LexActionsAgda.Syntax.Parser.LayoutAgda.Syntax.Parser.CommentsAgda.Syntax.Parser.LexerAgda.Syntax.Parser.ParserAgda.Syntax.Internal%Agda.TypeChecking.Substitute.DeBruijn!Agda.TypeChecking.Free.PrecomputeAgda.TypeChecking.Free.LazyAgda.TypeChecking.Free"Agda.TypeChecking.Substitute.Class$Agda.TypeChecking.Coverage.SplitTreeAgda.Syntax.Internal.Generic Agda.TypeChecking.CompiledClauseAgda.Syntax.Internal.DefsAgda.Syntax.AbstractAgda.Syntax.Internal.PatternAgda.Syntax.Abstract.Views$Agda.Syntax.Abstract.PatternSynonymsAgda.Syntax.Abstract.PatternAgda.Utils.TypeLevelAgda.Utils.TypeLitsAgda.Utils.Update Agda.Syntax.Concrete.DefinitionsAgda.Syntax.ParserAgda.TypeChecking.Free.OldAgda.Utils.WarshallAgda.Utils.WithDefaultAgda.Utils.Zipper Agda.VersionAgda.VersionCommitAgda.Interaction.LibraryAgda.Utils.IO.Directory Agda.TypeChecking.Serialise.BaseAgda.TypeChecking.Rules.TermAgda.TypeChecking.Rules.Decl#Agda.TypeChecking.Rules.ApplicationAgda.TypeChecking.RewritingAgda.TypeChecking.Reduce.FastAgda.TypeChecking.PrettyAgda.TypeChecking.PolarityAgda.TypeChecking.Monad.OptionsAgda.TypeChecking.Monad.ImportsAgda.TypeChecking.Monad.EnvAgda.TypeChecking.Monad.DebugAgda.TypeChecking.Monad.ContextAgda.TypeChecking.MetaVarsAgda.TypeChecking.Errors!Agda.TypeChecking.Monad.Signature Agda.TypeChecking.ProjectionLikeAgda.TypeChecking.Monad.CachingAgda.TypeChecking.WarningsAgda.TypeChecking.Monad.StateAgda.TypeChecking.Monad.Mutual!Agda.TypeChecking.Monad.BenchmarkAgda.TypeChecking.Constraints&Agda.TypeChecking.CompiledClause.Match(Agda.TypeChecking.CompiledClause.CompileAgda.TypeChecking.CheckInternalAgda.Syntax.Internal.NamesAgda.Interaction.InteractionTopAgda.Interaction.Imports&Agda.Interaction.Highlighting.GenerateAgda.Interaction.FindFileAgda.TypeChecking.InliningAgda.Interaction.Options.LensesAgda.TypeChecking.SubstituteAgda.TypeChecking.TelescopeAgda.TypeChecking.Monad.OpenAgda.TypeChecking.Monad.Builtin"Agda.TypeChecking.LevelConstraintsAgda.TypeChecking.DropArgsAgda.Compiler.Treeless.SubstAgda.Compiler.Treeless.Pretty$Agda.Compiler.Treeless.GuardsToPrimsAgda.Compiler.Treeless.CompareAgda.Compiler.Treeless.Uncase!Agda.Compiler.Treeless.AsPatternsAgda.TypeChecking.Monad.Trace,Agda.TypeChecking.Serialise.Instances.Common2Agda.TypeChecking.Serialise.Instances.Highlighting"Agda.TypeChecking.Monad.Statistics"Agda.TypeChecking.Monad.SizedTypesAgda.Syntax.Scope.MonadAgda.TypeChecking.DatatypesAgda.TypeChecking.Monad.Closure Agda.TypeChecking.Monad.MetaVars#Agda.TypeChecking.Monad.Constraints/Agda.TypeChecking.Serialise.Instances.Compilers.Agda.TypeChecking.Serialise.Instances.Internal.Agda.TypeChecking.Serialise.Instances.Abstract,Agda.TypeChecking.Serialise.Instances.Errors%Agda.TypeChecking.Serialise.InstancesAgda.TypeChecking.SerialiseAgda.TypeChecking.Rules.Def+Agda.TypeChecking.Rules.Builtin.CoinductionAgda.TypeChecking.Reduce.MonadAgda.TypeChecking.Records Agda.TypeChecking.Patterns.Match#Agda.TypeChecking.Patterns.Abstract"Agda.TypeChecking.MetaVars.MentionAgda.TypeChecking.EtaContractAgda.TypeChecking.Reduce#Agda.TypeChecking.SyntacticEquality#Agda.TypeChecking.Patterns.InternalAgda.TypeChecking.LevelAgda.TypeChecking.Free.ReduceAgda.TypeChecking.EmptyAgda.TypeChecking.DisplayFormAgda.TypeChecking.ConversionAgda.Termination.RecCheck Agda.Syntax.Internal.SanityCheckAgda.Interaction.Monad!Agda.Interaction.Highlighting.VimAgda.Compiler.Treeless.Unused%Agda.Compiler.Treeless.NormalizeNamesAgda.Compiler.Treeless.IdentityAgda.Compiler.Treeless.BuiltinAgda.Compiler.MAlonzo.CompilerAgda.Compiler.MAlonzo.CoerceAgda.Compiler.CallCompilerAgda.TypeChecking.DeadCode+Agda.Syntax.Translation.ReflectedToAbstract*Agda.Syntax.Translation.AbstractToConcreteAgda.Syntax.Abstract.Pretty*Agda.Syntax.Translation.InternalToAbstract Agda.TypeChecking.Telescope.PathAgda.TypeChecking.SizedTypes#Agda.TypeChecking.Rules.LHS.ProblemAgda.TypeChecking.Rules.DisplayAgda.TypeChecking.QuoteAgda.TypeChecking.IrrelevanceAgda.TypeChecking.SortAgda.TypeChecking.Implicit$Agda.TypeChecking.Rules.LHS.Implicit'Agda.TypeChecking.Rules.LHS.ProblemRestAgda.TypeChecking.FunctionsAgda.TypeChecking.Forcing'Agda.TypeChecking.Rewriting.NonLinMatch Agda.TypeChecking.RecordPatternsAgda.TypeChecking.Positivity!Agda.TypeChecking.MetaVars.Occurs Agda.TypeChecking.Coverage.MatchAgda.Termination.MonadAgda.Termination.InliningAgda.TypeChecking.NamesAgda.TypeChecking.Primitive#Agda.TypeChecking.Primitive.CubicalAgda.Compiler.Treeless.SimplifyAgda.Compiler.Treeless.Erase/Agda.Compiler.Treeless.EliminateLiteralPatterns(Agda.Compiler.Treeless.EliminateDefaults#Agda.TypeChecking.InstanceArgumentsAgda.TypeChecking.InjectivityAgda.TypeChecking.Unquote"Agda.TypeChecking.SizedTypes.Solve!Agda.TypeChecking.Rules.LHS.Unify"Agda.TypeChecking.IApplyConfluence'Agda.TypeChecking.ReconstructParametersAgda.TypeChecking.EtaExpandAgda.TypeChecking.AbstractAgda.TypeChecking.GeneralizeAgda.TypeChecking.Rules.DataAgda.TypeChecking.Rules.LHSAgda.TypeChecking.WithAgda.TypeChecking.Rules.BuiltinAgda.TypeChecking.CoverageAgda.TypeChecking.Rules.RecordAgda.Compiler.ToTreelessAgda.Termination.TermCheckAgda.Syntax.Abstract.CopatternsAgda.Syntax.Concrete.OperatorsAgda.Syntax.IdiomBracketsAgda.Syntax.DoNotation*Agda.Syntax.Translation.ConcreteToAbstract!Agda.Interaction.Highlighting.Dot$Agda.Interaction.Highlighting.Common"Agda.Interaction.Highlighting.JSON#Agda.Interaction.Highlighting.EmacsAgda.Interaction.BasicOpsAgda.Interaction.SearchAboutAgda.Interaction.MakeCaseAgda.Auto.ConvertAgda.Interaction.CommandLineAgda.Auto.AutoAgda.Compiler.CommonAgda.Compiler.MAlonzo.PragmasAgda.Compiler.MAlonzo.MiscAgda.Compiler.MAlonzo.EncodeAgda.Compiler.MAlonzo.Pretty Agda.Compiler.MAlonzo.Primitives"Agda.Compiler.MAlonzo.HaskellTypes#Agda.Interaction.Highlighting.LaTeX"Agda.Interaction.Highlighting.HTMLAgda.Interaction.AgdaTopAgda.Interaction.JSONTopAgda.Interaction.EmacsTopAgda.Compiler.JS.Compiler Agda.MainPretty Agda.UtilsStringDataChar Data.Maybe fromMaybe fromMaybeMData.TraversableforAgda.Utils.HashMap TraversableforM_Lazy listToMaybe maybeToList catMaybesmapMaybeforMifNull Data.List genericIndexAgda.TypeChecking.SubstitutionliftSAgda.Syntax.Internal.Patterns numberPatVarsLHS APatternLikeData.MapmapKeysMonotonicQName whyInScopeforcingTranslationcompileClauses NonLinMatch'TreefoldTermAgda.Syntax.TranslationAbstractToConcrete' Paths_AgdaLenses'AbstractSyntax AtTopLevelinteractionLoop localStateAgda.TypeChecking.MonadAgda.TypeChecking.Testsprop_splitTelescopesimplifyLevelConstraint getConTypeAgda.TheTypeCheckerbaseGHC.Base<*> Data.Functor<$>mplusmzero MonadPlusSystem.Console.GetOptOptionOptDescrOptArgReqArgNoArgArgDescr Control.Monadunless$><&>when<$containers-0.6.0.1Data.IntSet.InternalfromList toDescListtoList isSubsetOf intersection differenceunionunionsdelete singletonemptymembernulltransformers-0.5.5.0Control.Monad.Trans.ExceptExceptT mtl-2.2.2Control.Monad.Error.Class catchError throwError MonadError runExceptT mapExceptTpretty-1.1.3.6Text.PrettyPrint.HughesPJ fullRender renderStylerenderfsepfcatcatsep<+><>$+$$$ punctuatehangnestvcathsephcatbracesbracketsparens doubleQuotesquotesrationaldoublefloatintegerintrbracelbracerbracklbrackrparenlparenequalsspacecoloncommasemiisEmpty zeroWidthText sizedTextptexttextcharDoc#Text.PrettyPrint.Annotated.HughesPJstylePStrChrribbonsPerLine lineLengthmodeStyle OneLineModeLeftMode ZigZagModePageModeMode#strict-0.3.2-2aeC0uPBzhhHpNCyMYHGTDData.Strict.MaybemaybefromJust isNothingisJustJustNothingMaybeBackend AgdaLibFileAgdaLiblibNamelibFile libIncludes libDependsLibNamelibNameForCurrentDir emptyLibFile$fShowAgdaLibFileUnicodeOrAscii UnicodeOk AsciiOnlyunicodeOrAscii builtinNat builtinSuc builtinZerobuiltinNatPlusbuiltinNatMinusbuiltinNatTimesbuiltinNatDivSucAuxbuiltinNatModSucAuxbuiltinNatEqualsbuiltinNatLess builtinWord64builtinIntegerbuiltinIntegerPosbuiltinIntegerNegSuc builtinFloat builtinChar builtinString builtinUnitbuiltinUnitUnit builtinSigma builtinBool builtinTrue builtinFalse builtinList builtinNil builtinCons builtinIO builtinId builtinConId builtinIdElim builtinPath builtinPathPbuiltinInterval builtinIMin builtinIMax builtinINeg builtinIZero builtinIOnebuiltinPartialbuiltinPartialP builtinIsOnebuiltinItIsOne builtinEquivbuiltinEquivFunbuiltinEquivProofbuiltinPathToEquiv builtinGlue builtin_gluebuiltin_ungluebuiltinFaceForall builtinIsOne1 builtinIsOne2builtinIsOneEmpty builtinComp builtinPOr builtinTrans builtinHComp builtinSub builtinSubIn builtinSubOutbuiltinSizeUniv builtinSize builtinSizeLtbuiltinSizeSucbuiltinSizeInfbuiltinSizeMax builtinInf builtinSharp builtinFlatbuiltinEquality builtinReflbuiltinRewritebuiltinLevelMax builtinLevelbuiltinLevelZerobuiltinLevelSucbuiltinSetOmegabuiltinFromNatbuiltinFromNegbuiltinFromString builtinQNamebuiltinAgdaSortbuiltinAgdaSortSetbuiltinAgdaSortLitbuiltinAgdaSortUnsupported builtinHiding builtinHiddenbuiltinInstancebuiltinVisiblebuiltinRelevancebuiltinRelevantbuiltinIrrelevant builtinAssocbuiltinAssocLeftbuiltinAssocRightbuiltinAssocNonbuiltinPrecedencebuiltinPrecRelatedbuiltinPrecUnrelated builtinFixitybuiltinFixityFixity builtinArgbuiltinArgInfobuiltinArgArgInfo builtinArgArg builtinAbs builtinAbsAbsbuiltinAgdaTermbuiltinAgdaTermVarbuiltinAgdaTermLambuiltinAgdaTermExtLambuiltinAgdaTermDefbuiltinAgdaTermConbuiltinAgdaTermPibuiltinAgdaTermSortbuiltinAgdaTermLitbuiltinAgdaTermUnsupportedbuiltinAgdaTermMetabuiltinAgdaErrorPartbuiltinAgdaErrorPartStringbuiltinAgdaErrorPartTermbuiltinAgdaErrorPartNamebuiltinAgdaLiteralbuiltinAgdaLitNatbuiltinAgdaLitWord64builtinAgdaLitFloatbuiltinAgdaLitCharbuiltinAgdaLitStringbuiltinAgdaLitQNamebuiltinAgdaLitMetabuiltinAgdaClausebuiltinAgdaClauseClausebuiltinAgdaClauseAbsurdbuiltinAgdaPatternbuiltinAgdaPatVarbuiltinAgdaPatConbuiltinAgdaPatDotbuiltinAgdaPatLitbuiltinAgdaPatProjbuiltinAgdaPatAbsurdbuiltinAgdaDefinitionFunDefbuiltinAgdaDefinitionDataDefbuiltinAgdaDefinitionRecordDef$builtinAgdaDefinitionDataConstructorbuiltinAgdaDefinitionPostulatebuiltinAgdaDefinitionPrimitivebuiltinAgdaDefinitionbuiltinAgdaMetabuiltinAgdaTCMbuiltinAgdaTCMReturnbuiltinAgdaTCMBindbuiltinAgdaTCMUnifybuiltinAgdaTCMTypeErrorbuiltinAgdaTCMInferTypebuiltinAgdaTCMCheckTypebuiltinAgdaTCMNormalisebuiltinAgdaTCMReducebuiltinAgdaTCMCatchErrorbuiltinAgdaTCMGetContextbuiltinAgdaTCMExtendContextbuiltinAgdaTCMInContextbuiltinAgdaTCMFreshNamebuiltinAgdaTCMDeclareDefbuiltinAgdaTCMDeclarePostulatebuiltinAgdaTCMDefineFunbuiltinAgdaTCMGetTypebuiltinAgdaTCMGetDefinitionbuiltinAgdaTCMBlockOnMetabuiltinAgdaTCMCommitbuiltinAgdaTCMQuoteTermbuiltinAgdaTCMUnquoteTermbuiltinAgdaTCMIsMacrobuiltinAgdaTCMWithNormalisationbuiltinAgdaTCMDebugPrintbuiltinAgdaTCMNoConstraintsbuiltinAgdaTCMRunSpeculative builtinsNoDef sizeBuiltinsCutOff DontCutOff $fShowCutOff $fEqCutOff $fOrdCutOffSemiringaddmulzeroHasZero zeroElementintegerSemiring intSemiring boolSemiring $fHasZeroInt$fHasZeroInteger AffineHole ZeroHolesOneHole ManyHoles$fApplicativeAffineHole$fFunctorAffineHoleBiMap biMapThere biMapBacklookup invLookupinsert $fShowBiMap $fOrdBiMap $fEqBiMap UnicodeTest IsControlIsSpaceIsLowerIsUpperIsAlpha IsAlphaNumIsPrintIsDigit IsOctDigit IsHexDigitIsLetterIsMarkIsNumber IsPunctuationIsSymbol IsSeparatordecDigithexDigitoctDigit unicodeTeststestChar$fEqUnicodeTest$fOrdUnicodeTest$fShowUnicodeTest whileLeft caseEitherM mapEithermapLeftmapRighttraverseEitherisRightisLeftfromLeft fromRight fromLeftM fromRightM maybeLeft maybeRightallLeftallRight maybeToEitherexpandEnvironmentVariables $fEqToken $fShowTokenErrornoMsgstrMsg mkExceptT $fError[]floatEqfloatLt iterWhile repeatWhile repeatWhileMtrampolineWhiletrampolineWhileM trampoline trampolineM iterateUntil iterateUntilMiterate' applyWhen applyUnless applyWhenM applyUnlessMDioidcompose unitComposeMeetSemiLatticemeetPlusplusToptopisTopdebug setDebuggingtracetraceM$fPlusIntIntInt Decoration traverseF distributeF<.>dmapdget$fDecoration(,)$fDecorationCompose$fDecorationIdentitytopSort TyVarBind UnkindedVarQOpQVarOpNameIdentSymbolQualUnQual ModuleNameLiteralIntFracAltExpVarConLitInfixAppAppLambdaLetIfCase ExpTypeSigNegAppFakeExpStmt Qualifier GeneratorPatPVarPLitPAsPat PWildCardPBangPatPApp PatTypeSigPIrrPatTypeTyForallTyFunTyConTyVarTyAppFakeTypeMatch GuardedRhsRhs UnGuardedRhs GuardedRhssBindsBDeclsDeriving StrictnessStrictConDecl DataOrNewDataTypeNewTypeDeclTypeDeclDataDeclTypeSigFunBindPatSynFakeDecl ImportSpecIVar ImportDecl importModuleimportQualified importSpecs ModulePragmaLanguagePragma OtherPragmaModuleunit_con $fEqDataOrNew$fEqStrictness $fEqLiteral$fEqModuleName$fOrdModuleName$fEqName $fEqQName$fEqQOp $fEqTyVarBind$fEqType$fEqPat $fEqConDecl$fEqDecl $fEqMatch$fEqRhs$fEqExp$fEqAlt $fEqBinds$fEqGuardedRhs$fEqStmtCatchIOcatchIO$fCatchIOWriterT $fCatchIOIOreadBinaryFile' readTextFilehPutStr writeFilewriteTextToFilewriteToTempFilereadModifyIORef' Impossible UnreachableImpMissingDefinitionsthrowImpossiblecatchImpossible$fExceptionImpossible$fShowImpossibleEmptyabsurd toImpossible $fShowEmpty $fOrdEmpty $fEqEmpty $fDataEmptyBagbagsize! notMembercountgroupskeyselems toAscListmap traverse' $fFoldableBag $fMonoidBag$fSemigroupBag $fShowBag$fEqBag$fOrdBagimpossibleTestChoice LeftDisjunct RightDisjunctSRes HandleSolQPB QPBlockedQPDoubleBlockedPBNotPBPBlockedPDoubleBlockedMBNotBBlockedFailedMetaEnvMMNotMMetaBlkInfo Refinable refinementsMove'MovemoveCostmoveNextCostgetCost RefCreateEnvrunRefCreateEnvUndoRestorePrioMetaNoPrioSubConstraintsscflip sccomcountscsub1scsub2CTree ctpriometactsubctparent cthandlesMetavarmbindmprincipalpresentmobs mcompoint mextrarefsOKMetaOKHandleOKValPropOK AddExtraRefAnd SideconditionOr ConnectHandleTermTravtravPriogetPrio hequalMetavarnewMetainitMetanewCTreenewSubConstraints ureadIORef uwriteIORef umodifyIORefureadmodifyIORefrunUndonewPlaceholder newOKHandledryInstantiatermmmcasemmmcasemmpcase doubleblockmbcasembpcasemmbpcasewaitokmbretmbfailedmpret expandbind topSearchextractblkinfosrecalcsseqcrecalcreccalccalcchoosePrioMeta propagatePriochoose$fRefinableOKValblk$fMonadRefCreateEnv$fApplicativeRefCreateEnv$fFunctorRefCreateEnv $fEqPrioMeta $fEqMetavar $fTravMMblk$fRefinableChoiceblk$fEqPrio $fOrdPrio $fNumPrio $fNumCost$fEqCost $fOrdCostIntSetbelowabovefull toFiniteList invariant$fMonoidIntSet$fSemigroupIntSet $fEqIntSet $fShowIntSetLensMapLensSetLensGetLens'lFstlSnd^.setoverfocususe.=%=%==%%= locallyStateviewlocallylocally'keyIndexZeroSucAllNilConsSomewithSomemakeAll forgetAll forgetIndex mapWithIndexlIndex lookupIndex allIndices AutoTokenMCRDLTSH AutoOptions autoHints autoTimeOutautoPickautoMode autoHintModeTimeOut getTimeOutHints AutoHintModeAHMNone AHMModuleMNormal MCaseSplitMRefineinitAutoOptionsaoHints aoTimeOutaoPickaoMode aoHintMode autoTokens parseTime parseArgs $fShowTimeOutRecordfield1field2 lensField1 lensField2 boolToMaybeunionMaybeWith unzipMaybe filterMaybeforMaybe caseMaybeifJustmaybeM caseMaybeMifJustMwhenJust whenNothing whenJustM whenNothingMallJustMListTrunListTmapListTnilListT consListTsgListT caseListT foldListT concatListT runMListT consMListTsgMListT mapMListT mapMListT_alt liftListT$fMonadStatesListT$fMonadReaderrListT$fMonadIOListT$fMonadTransListT $fMonadListT$fApplicativeListT$fMonadPlusListT$fAlternativeListT $fMonoidListT$fSemigroupListT$fFunctorListT WarningNameOverlappingTokensWarning_LibUnknownField_EmptyAbstract_EmptyInstance_ EmptyMacro_ EmptyMutual_EmptyPostulate_ EmptyPrivate_EmptyGeneralize_EmptyPrimitive_InvalidCatchallPragma_InvalidNoUniverseCheckPragma_InvalidTerminationCheckPragma_InvalidNoPositivityCheckPragma_MissingDefinitions_NotAllowedInMutual_ PolarityPragmasButNotPostulates_PragmaNoTerminationCheck_PragmaCompiled_UnknownFixityInMixfixDecl_UnknownNamesInFixityDecl_UnknownNamesInPolarityPragmas_UselessAbstract_UselessInstance_UselessPrivate_ OldBuiltin_EmptyRewritePragma_IllformedAsClause_UselessPublic_UnreachableClauses_UselessInline_WrongInstanceDeclaration_InstanceWithExplicitArg_InstanceNoOutputTypeName_InstanceArgWithExplicitArg_GenericWarning_DeprecationWarning_InversionDepthReached_TerminationIssue_CoverageIssue_CoverageNoExactSplit_ModuleDoesntExport_NotStrictlyPositive_UnsolvedMetaVariables_UnsolvedInteractionMetas_UnsolvedConstraints_GenericNonFatalError_SafeFlagPostulate_SafeFlagPragma_SafeFlagNonTerminating_SafeFlagTerminating_&SafeFlagWithoutKFlagPrimEraseEquality_SafeFlagNoPositivityCheck_SafeFlagPolarity_SafeFlagNoUniverseCheck_ UserWarning_WithoutKFlagPrimEraseEquality_CantGeneralizeOverSorts_AbsurdPatternRequiresNoRHS_InfectiveImport_CoInfectiveImport_ WarningMode _warningSet _warn2Error warningSet warn2ErrordefaultWarningSetdefaultWarningModewarningModeUpdate warningSets noWarningsunsolvedWarnings errorWarnings allWarnings usualWarningsstring2WarningNamewarningName2String usageWarning$fEqWarningName$fOrdWarningName$fShowWarningName$fReadWarningName$fEnumWarningName$fBoundedWarningName$fEqWarningMode$fShowWarningModeHelp GeneralHelpHelpFor allHelpTopicshelpTopicUsagestring2HelpTopic $fEqHelpTopic$fShowHelpTopic$fEqHelp $fShowHelpmemomemoRec memoUnsafe memoUnsafeHMaxNat getMaxNat$fMonoidMaxNat$fSemigroupMaxNat $fNumMaxNat $fEqMaxNat $fOrdMaxNat $fShowMaxNat $fEnumMaxNat NonemptyList:!headNetailNeconsNeunionNe zipWithNezipNe caseListNe listCaseNeelemNe$fShowNonemptyList$fMonadNonemptyList$fApplicativeNonemptyList$fSemigroupNonemptyList$fEqNonemptyList$fOrdNonemptyList$fFunctorNonemptyList$fFoldableNonemptyList$fTraversableNonemptyList$fDataNonemptyListNull ifNotNullifNullM ifNotNullMwhenNull unlessNull whenNullM unlessNullM $fNullDoc $fNullMaybe $fNullSet $fNullSeq $fNullHashSet $fNullHashMap $fNullMap $fNullIntSet $fNullIntMap $fNullBag$fNull[]$fNullByteString $fNull(,)$fNull()toStricttoLazy $fBinaryMaybe $fNFDataMaybe$fTraversableMaybe$fFoldableMaybe $fMonoidMaybe$fSemigroupMaybe$fGenericMaybe $fDataMaybeReadPparsegetlookpfail+++<++gathersatisfystringmunchmunch1choice skipSpacesbetweenoptionoptionalmanymany1skipMany skipMany1sepBysepBy1endByendBy1chainrchainlchainr1chainl1manyTillparse' $fMonadPlusP$fAlternativeP$fMonadP$fApplicativeP$fMonadPlusReadP$fAlternativeReadP $fMonadReadP$fApplicativeReadP$fFunctorReadP $fFunctorP Inclusion inclusion Pointwise pointwise PartialOrd comparable ComparablePartialOrderingPOLTPOLEPOEQPOGEPOGTPOAnyleqPOoppPOorPOseqPO fromOrdering fromOrderings toOrderings comparableOrdrelated$fMonoidPartialOrdering$fSemigroupPartialOrdering$fPartialOrdPartialOrdering$fPartialOrd(,)$fPartialOrdEither$fPartialOrdMaybe$fPartialOrd()$fPartialOrdInteger$fPartialOrdInt$fPartialOrdPointwise$fPartialOrdInclusion$fPartialOrdInclusion0$fEqPartialOrdering$fShowPartialOrdering$fEnumPartialOrdering$fBoundedPartialOrdering $fEqPointwise$fShowPointwise$fFunctorPointwise $fEqInclusion$fOrdInclusion$fShowInclusion$fFunctorInclusionLeftClosedPOMonoidinverseComposePOMonoid POSemigroupPtrnewPtrderefPtr updatePtrsetPtr updatePtrM $fDataIORef $fNFDataPtr $fHashablePtr$fOrdPtr$fEqPtr$fTraversablePtr $fFoldablePtr $fFunctorPtr $fShowPtr $fDataPtrpretty prettyPrec prettyList prettyShowpwordsfwords prettyList_mparensalign multiLineTextpshow $fDataDoc$fPrettyNonemptyList $fPretty[] $fPrettyMaybe $fPretty() $fPrettyDoc $fPrettyChar$fPrettyInteger $fPrettyInt32 $fPrettyInt $fPrettyBoolDocPParserWithGrammar ParserClassgrammarsat'annotatememoisememoiseIfPrintingParserdocsattokentokbindPchoicePseqPstarPatomP$fAlternativeParser$fApplicativeParser$fFunctorParser $fMonadParser$fParserClassParserkrtok#$fParserClassParserWithGrammarkrtok$fAlternativeParserWithGrammar$fApplicativeParserWithGrammar$fFunctorParserWithGrammar$fMonadParserWithGrammarFlexsflexsRigidsrigidsTruncateOffsettruncateOffset ValidOffset validOffsetCTrans SubstitutesubstSolution theSolution PolaritiesPolarityAssignmentPolarityLeastGreatest Constraint Constraint'leftExprcmp rightExprCmpLtLeSizeExpr SizeExpr'ConstRigidInftyFlexoffsetrigidflexFlexIdflexIdRigidIdrigidIdOffsetOemptyPolaritiespolaritiesFromAssignments getPolarity emptySolution simplify1ifLe compareOffset$fPlusOffsetOffsetOffset$fMeetSemiLatticeOffset$fPrettyOffset $fShowOffset $fPrettyRigid $fShowRigid $fPrettyFlex $fShowFlex$fPrettySizeExpr'$fPlusSizeExpr'OffsetSizeExpr' $fPrettyCmp$fTopCmp$fMeetSemiLatticeCmp$fOrdCmp $fDioidCmp$fPrettyConstraint'$fPrettyPolarity$fPrettyPolarityAssignment$fPrettySolution$fSubstituterfSolution$fSubstituterfMap$fSubstituterf[]$fSubstituterfConstraint'$fSubstituterfSizeExpr'$fValidOffsetSizeExpr'$fValidOffsetOffset$fTruncateOffsetSizeExpr'$fTruncateOffsetOffset$fRigidsrConstraint'$fRigidsrSizeExpr' $fRigidsr[]$fFlexsflexConstraint'$fFlexsflexSizeExpr' $fFlexsflex[] $fEqOffset $fOrdOffset $fNumOffset $fEnumOffset $fEqRigid $fOrdRigid$fEqFlex $fOrdFlex$fShowSizeExpr' $fEqSizeExpr'$fOrdSizeExpr'$fFunctorSizeExpr'$fFoldableSizeExpr'$fTraversableSizeExpr' $fShowCmp$fEqCmp $fBoundedCmp $fEnumCmp$fShowConstraint'$fFunctorConstraint'$fFoldableConstraint'$fTraversableConstraint' $fEqPolarity $fOrdPolarity$fShowSolution$fNullSolution StarSemiRingostarSemiRingozeroooneoplusotimes$fSemiRingMaybe $fSemiRing()$fStarSemiRingMaybe$fStarSemiRing() Singleton$fSingleton(,)HashMap$fSingletonaHashSet$fSingleton(,)IntMap$fSingleton(,)Map$fSingletonIntIntSet$fSingletonaSet$fSingletonaSeq$fSingletonaNonemptyList$fSingletona[]$fSingletonaMaybeclustercluster' SizedThingtheSize sizedThingSized sizeThing $fSizedSeq$fSizedHashSet$fSizedHashMap $fSizedSet $fSizedMap $fSizedIntSet $fSizedIntMap $fSized[]$fNullSizedThing$fSizedSizedThingSuffixNoSuffixPrime SubscriptsubscriptAllowedisSubscriptDigittoSubscriptDigitfromSubscriptDigit nextSuffix suffixView addSuffixEither3In1In2In3ThreeOneTwo partition3partitionEithers3 mapEither3M forEither3M $fEqThree $fOrdThree $fShowThree$fBoundedThree $fEnumThree $fEqEither3 $fOrdEither3 $fShowEither3Trie everyPrefix unionWith insertWithadjusttoListOrderedBy mapSubTries lookupPath lookupTriefiltervalueAt $fNullTrie $fShowTrie$fEqTrie $fFunctorTrie$fFoldableTrieList2list2-*-mapFstmapSnd/\swapfst3snd3thd3uncurry3uncurry4mapPairMmapFstMmapSndM$fApplicativeList2 $fEqList2$fFunctorList2$fFoldableList2$fTraversableList2 EitherOrBothB unionWithMinsertWithKeyM allWithKey filterKeysunzipunzip3StrSufSt SSSMismatchSSSStrip SSSResultReversedSuffixPrefixsnoccaseList caseListMlistCase headMaybeheadWithDefault tailMaybetailWithDefault lastMaybelast2dropEndunconsmconsinitLast initMaybe!!!indexWithDefault findWithIndexdownFrom updateHead updateLastupdateAtdealspanEnd takeWhileJustspanJustpartitionMaybe filterAndRestmapMaybeAndRest dropCommon isSublistOf stripPrefixBy stripSuffixstripReversedSuffixwordsBychopchopWhenholessorteddistinct fastDistinctallEqual duplicatesgroupBy'groupOnsplitExactlyAtgenericElemIndexzipWith'zipWithKeepRestnubOnuniqOn commonSuffix commonPrefixeditDistanceSpec editDistanceStrunStrquotehaskellStringLiteral delimiter showIndexaddFinalNewLineindentshowThousandSepltrimrtrimtrim $fShowStr$fEqStrCPUTime ClockTime getClockTimefromMilliseconds getCPUTime measureTime$fPrettyCPUTime $fEqCPUTime $fShowCPUTime $fOrdCPUTime $fNumCPUTime $fRealCPUTime $fEnumCPUTime$fIntegralCPUTime LineNumber LibWarning' UnknownFieldrunP parseLibFiletrimLineComment splitCommas$fShowLibWarning'$fDataLibWarning'$fShowGenericLineLispAQresponse putResponse display_info'clearRunningInfo clearWarningdisplayRunningInfo $fShowLisp $fPrettyLisp$fEqLisp==<<whenMunlessMguardMifMifNotMand2MandMallMor2MorManyMaltM1 orEitherMmapM'forM'mapMMforMM mapMaybeM forMaybeM dropWhileM dropWhileEndM partitionM fromMaybeMP catMaybesMPfinallytryMaybebracket_readM$fMonadFailIdentity AbsolutePathfilePath mkAbsoluterootPathabsolute===doesFileExistCaseSensitive$fPrettyAbsolutePath$fShowAbsolutePath$fEqAbsolutePath$fOrdAbsolutePath$fDataAbsolutePath$fHashableAbsolutePathHashhashByteString hashTextFilehashText combineHashes hashString MonadBench getBenchmark getsBenchmark putBenchmarkmodifyBenchmark Benchmark benchmarkOncurrentAccounttimings BenchmarkOn BenchmarkOff BenchmarkSomeTimingsCurrentAccountAccount isBenchmarkOnmapBenchmarkOnmapCurrentAccount mapTimings addCPUTimesetBenchmarkingswitchBenchmarkingresetbillTo billToCPS billPureTo$fPrettyBenchmark$fNullBenchmark$fMonadBenchaStateT$fMonadBenchaReaderT KillRangeT KillRange killRangeSetRangesetRangeHasRangegetRange PrintRangeRangeRange'NoRangeIntervalWithoutFileInterval Interval'iStartiEndPositionWithoutFilePositionSrcFile Position'PnsrcFileposPosposLineposColpositionInvariantintervalInvariantsetIntervalFilegetIntervalFile posToIntervaliLengthrangeIntervalsintervalsToRangeconsecutiveAndSeparatedrangeInvariant rangeFile rightMargin killRangeMap killRange1 killRange2 killRange3 killRange4 killRange5 killRange6 killRange7 killRange8 killRange9 killRange10 killRange11 killRange12 killRange13 killRange14 killRange15 killRange16 killRange17 killRange18 killRange19 startPos'startPosnoRangemovePosmovePosByString backupPos posToRange' posToRangeintervalToRangerangeToIntervalWithFilerangeToInterval continuouscontinuousPerLinerStart'rStartrEnd'rEnd fuseIntervals fuseRanges fuseRange beginningOfbeginningOfFile withRangeOfinterleaveRanges$fPrettyPosition'$fShowPosition'$fOrdPosition' $fEqPosition'$fPrettyPosition'0$fShowPosition'0$fPrettyInterval'$fShowInterval'$fPrettyInterval'0$fShowInterval'0$fPrettyRange' $fShowRange' $fShowRange'0 $fNullRange'$fHasRangeEither$fHasRangeMaybe$fHasRange(,,,,,,)$fHasRange(,,,,,)$fHasRange(,,,,)$fHasRange(,,,)$fHasRange(,,) $fHasRange(,)$fHasRangeNonemptyList $fHasRange[]$fHasRangeBool$fHasRangeRange'$fHasRangeInterval' $fSetRange[]$fSetRangeRange'$fKillRangeEither$fKillRangeMaybe$fKillRange(,,,)$fKillRange(,,)$fKillRange(,)$fKillRangeSet$fKillRangeMap $fKillRange[]$fKillRangeNonemptyList$fKillRange[]0$fKillRangeInteger$fKillRangeInt$fKillRangeBool $fKillRange()$fKillRangeVoid$fKillRangeRange'$fPrettyPrintRange$fDataPosition'$fFunctorPosition'$fFoldablePosition'$fTraversablePosition'$fGenericPosition'$fDataInterval' $fEqInterval'$fOrdInterval'$fFunctorInterval'$fFoldableInterval'$fTraversableInterval'$fGenericInterval' $fDataRange' $fEqRange' $fOrdRange'$fFunctorRange'$fFoldableRange'$fTraversableRange'$fGenericRange'$fEqPrintRange$fOrdPrintRange$fHasRangePrintRange$fSetRangePrintRange$fKillRangePrintRangeDoDropdoDropdropMoreunDropDropdropNdropFromInversePermuteinversePermute PermutationPerm permRange permPickspermute safePermuteidPtakePdroppedPliftPcomposePinvertPcompactPreversePflipPexpandPtopoSort$fKillRangePermutation$fNullPermutation$fSizedPermutation$fShowPermutation$fInversePermute->[]$fInversePermute[][]$fInversePermute[]IntMap$fInversePermute[][]0$fKillRangeDrop$fDoDropPermutation $fDoDrop[]$fEqPermutation$fDataPermutation$fEqDrop $fOrdDrop $fShowDrop $fDataDrop $fFunctorDrop$fFoldableDrop$fTraversableDropFixity' noFixity' UniverseCheckYesUniverseCheckNoUniverseCheckPositivityCheckTerminationCheckNoTerminationCheckNonTerminating TerminatingTerminationMeasure Renaming'RenamingrenFromrenTo renToRange ImportedName'ImportedModule ImportedNameUsing' UseEverythingUsingImportDirective'ImportDirectiveimportDirRangeusinghiding impRenaming publicOpen InteractionId interactionIdMaybePlaceholder Placeholder NoPlaceholderPositionInName BeginningMiddleEndConstrMetaIdmetaIdNameIdArityNatIsMacroMacroDef NotMacroDef IsInstance InstanceDefNotInstanceDef IsAbstract AbstractDef ConcreteDefAccess PrivateAccess PublicAccess OnlyQualifiedIsInfixInfixDef PrefixDef DataOrRecordIsDataIsRecord ProjOrigin ProjPrefix ProjPostfix ProjSystem ConOrigin ConOSystemConOConConORec ConOSplitRStringRawNameRangedrangeOf rangedThingNamedArg LensNamed lensNamedNamed_NamednameOf namedThingDomdomInfo domFinitedomNameunDom Underscore underscore isUnderscoreArgargInfounArg LensArgInfo getArgInfo setArgInfo mapArgInfoArgInfo argInfoHidingargInfoModality argInfoOriginargInfoFreeVariablesLensFreeVariablesgetFreeVariablessetFreeVariablesmapFreeVariables FreeVariables UnknownFVsKnownFVs LensOrigin getOrigin setOrigin mapOrigin WithOriginwoOriginwoThingOrigin UserWrittenInserted Reflected CaseSplit Substitution LensRelevance getRelevance setRelevance mapRelevance RelevanceRelevant NonStrict Irrelevant LensQuantity getQuantity setQuantity mapQuantityQuantity Quantity0 Quantity1 Quantityω LensModality getModality setModality mapModalityModality modRelevance modQuantity LensHiding getHiding setHiding mapHiding WithHidingwhHidingwhThingHidingHiddenInstance NotHidden Overlappable YesOverlap NoOverlap Induction Inductive CoInductiveHasEtaNoEtaYesEtaFileType AgdaFileType MdFileType RstFileType TexFileType OrgFileTypeDelayed NotDelayed mergeHidingvisible notVisiblehiddenhidehideOrKeepInstance makeInstance makeInstance'isOverlappable isInstance sameHidingdefaultModalitymoreUsableModalityusableModalitycomposeModality applyModalityinverseComposeModalityinverseApplyModality lModRelevance lModQuantitygetRelevanceModsetRelevanceModmapRelevanceModgetQuantityModsetQuantityModmapQuantityModdefaultQuantity moreQuantityusableQuantitycomposeQuantity applyQuantityinverseComposeQuantityinverseApplyQuantity allRelevancesdefaultRelevance isRelevant isIrrelevant isNonStrict moreRelevantusableRelevancecomposeRelevanceapplyRelevanceinverseComposeRelevanceinverseApplyRelevanceirrToNonStrictnonStrictToRelnonStrictToIrrunknownFreeVariablesnoFreeVariablesoneFreeVariablefreeVariablesFromListhasNoFreeVariablesdefaultArgInfogetHidingArgInfosetHidingArgInfomapHidingArgInfogetModalityArgInfosetModalityArgInfomapModalityArgInfogetOriginArgInfosetOriginArgInfomapOriginArgInfogetFreeVariablesArgInfosetFreeVariablesArgInfomapFreeVariablesArgInfo defaultArg withArgsFromwithNamedArgsFrom argFromDomnamedArgFromDom domFromArgdomFromNamedArg defaultDom defaultArgDomdefaultNamedArgDomunnamednamed getNameOf setNameOf mapNameOfnamedArgdefaultNamedArg unnamedArgupdateNamedArg setNamedArgunrangedrawNameToStringstringToRawName bestConInfo noPlaceholderdefaultImportDirisDefaultImportDirsetImportedName$fKillRangeDelayed$fPrettyFileType$fNFDataHasEta$fKillRangeHasEta$fHasRangeHasEta$fNFDataInduction$fKillRangeInduction$fHasRangeInduction$fPrettyInduction$fNFDataOverlappable$fMonoidOverlappable$fSemigroupOverlappable$fNFDataHiding$fKillRangeHiding$fMonoidHiding$fSemigroupHiding$fPrettyHiding$fNFDataWithHiding$fKillRangeWithHiding$fSetRangeWithHiding$fHasRangeWithHiding$fApplicativeWithHiding$fDecorationWithHiding$fLensHidingWithHiding$fLensHidingHiding$fNFDataQuantity$fKillRangeQuantity$fLeftClosedPOMonoidQuantity$fPOMonoidQuantity$fPOSemigroupQuantity$fPartialOrdQuantity$fMonoidQuantity$fSemigroupQuantity$fLensQuantityQuantity$fLeftClosedPOMonoidRelevance$fPOMonoidRelevance$fPOSemigroupRelevance$fMonoidRelevance$fSemigroupRelevance$fPartialOrdRelevance$fOrdRelevance$fNFDataRelevance$fKillRangeRelevance$fLensQuantityModality$fNFDataModality$fKillRangeModality$fLeftClosedPOMonoidModality$fPOMonoidModality$fPOSemigroupModality$fPartialOrdModality$fMonoidModality$fSemigroupModality$fLensModalityModality$fLensRelevanceRelevance$fLensRelevanceModality$fNFDataOrigin$fKillRangeOrigin$fNFDataWithOrigin$fKillRangeWithOrigin$fSetRangeWithOrigin$fHasRangeWithOrigin$fDecorationWithOrigin$fLensOriginWithOrigin$fLensOriginOrigin$fNFDataFreeVariables$fMonoidFreeVariables$fSemigroupFreeVariables $fLensFreeVariablesFreeVariables$fLensQuantityArgInfo$fLensRelevanceArgInfo$fLensFreeVariablesArgInfo$fLensOriginArgInfo$fLensModalityArgInfo$fLensHidingArgInfo$fNFDataArgInfo$fKillRangeArgInfo$fLensArgInfoArgInfo$fLensQuantityArg$fLensRelevanceArg$fLensFreeVariablesArg$fLensOriginArg$fLensModalityArg$fLensHidingArg$fLensArgInfoArg $fNFDataArg$fEqArg$fKillRangeArg $fSetRangeArg $fHasRangeArg$fDecorationArg$fUnderscoreDoc$fUnderscoreByteString$fUnderscore[] $fNFDataNamed$fKillRangeNamed$fSetRangeNamed$fHasRangeNamed$fDecorationNamed$fLensNamednameArg$fLensNamednameNamed$fNFDataRanged$fDecorationRanged$fKillRangeRanged$fHasRangeRanged $fOrdRanged $fEqRanged$fPrettyRanged$fLensQuantityDom$fLensRelevanceDom$fLensFreeVariablesDom$fLensOriginDom$fLensModalityDom$fLensHidingDom$fLensArgInfoDom$fEqDom$fKillRangeDom $fHasRangeDom$fDecorationDom$fKillRangeConOrigin$fKillRangeProjOrigin$fKillRangeAccess$fHasRangeAccess$fNFDataAccess$fPrettyAccess$fKillRangeIsAbstract$fNFDataIsInstance$fHasRangeIsInstance$fKillRangeIsInstance$fHasRangeIsMacro$fKillRangeIsMacro$fHashableNameId$fNFDataNameId $fEnumNameId$fPrettyNameId$fKillRangeNameId$fNFDataMetaId $fShowMetaId$fPrettyMetaId$fNFDataMaybePlaceholder$fKillRangeMaybePlaceholder$fHasRangeMaybePlaceholder$fKillRangeInteractionId$fPrettyInteractionId$fNFDataImportedName'$fKillRangeImportedName'$fHasRangeImportedName'$fNFDataUsing'$fKillRangeUsing'$fHasRangeUsing'$fMonoidUsing'$fSemigroupUsing'$fNFDataRenaming'$fKillRangeRenaming'$fHasRangeRenaming'$fNFDataImportDirective'$fKillRangeImportDirective'$fHasRangeImportDirective'$fNFDataTerminationCheck$fKillRangeTerminationCheck$fKillRangeUniverseCheck $fDataDelayed $fShowDelayed $fEqDelayed $fOrdDelayed$fDataFileType $fEqFileType $fOrdFileType$fShowFileType $fDataHasEta $fShowHasEta $fEqHasEta $fOrdHasEta$fDataInduction $fEqInduction$fOrdInduction$fShowInduction$fDataOverlappable$fShowOverlappable$fEqOverlappable$fOrdOverlappable $fDataHiding $fShowHiding $fEqHiding $fOrdHiding$fDataWithHiding$fEqWithHiding$fOrdWithHiding$fShowWithHiding$fFunctorWithHiding$fFoldableWithHiding$fTraversableWithHiding$fDataQuantity$fShowQuantity$fGenericQuantity $fEqQuantity$fEnumQuantity$fBoundedQuantity $fOrdQuantity$fDataRelevance$fShowRelevance $fEqRelevance$fEnumRelevance$fBoundedRelevance$fGenericRelevance$fDataModality $fEqModality $fOrdModality$fShowModality$fGenericModality $fDataOrigin $fShowOrigin $fEqOrigin $fOrdOrigin$fDataWithOrigin$fEqWithOrigin$fOrdWithOrigin$fShowWithOrigin$fFunctorWithOrigin$fFoldableWithOrigin$fTraversableWithOrigin$fDataFreeVariables$fEqFreeVariables$fOrdFreeVariables$fShowFreeVariables $fDataArgInfo $fEqArgInfo $fOrdArgInfo $fShowArgInfo $fDataArg$fOrdArg $fShowArg $fFunctorArg $fFoldableArg$fTraversableArg $fEqNamed $fOrdNamed $fShowNamed $fDataNamed$fFunctorNamed$fFoldableNamed$fTraversableNamed $fDataRanged $fShowRanged$fFunctorRanged$fFoldableRanged$fTraversableRanged $fDataDom$fOrdDom $fShowDom $fFunctorDom $fFoldableDom$fTraversableDom$fDataConOrigin$fShowConOrigin $fEqConOrigin$fOrdConOrigin$fEnumConOrigin$fBoundedConOrigin$fDataProjOrigin$fShowProjOrigin$fEqProjOrigin$fOrdProjOrigin$fEnumProjOrigin$fBoundedProjOrigin$fDataDataOrRecord$fEqDataOrRecord$fOrdDataOrRecord$fShowDataOrRecord $fDataIsInfix $fShowIsInfix $fEqIsInfix $fOrdIsInfix $fDataAccess $fShowAccess $fEqAccess $fOrdAccess$fDataIsAbstract$fShowIsAbstract$fEqIsAbstract$fOrdIsAbstract$fDataIsInstance$fShowIsInstance$fEqIsInstance$fOrdIsInstance $fDataIsMacro $fShowIsMacro $fEqIsMacro $fOrdIsMacro $fEqNameId $fOrdNameId $fDataNameId$fGenericNameId $fShowNameId $fEqMetaId $fOrdMetaId $fNumMetaId $fRealMetaId $fEnumMetaId$fIntegralMetaId $fDataMetaId$fShowPositionInName$fEqPositionInName$fOrdPositionInName$fDataPositionInName$fDataMaybePlaceholder$fEqMaybePlaceholder$fOrdMaybePlaceholder$fFunctorMaybePlaceholder$fFoldableMaybePlaceholder$fTraversableMaybePlaceholder$fShowMaybePlaceholder$fEqInteractionId$fOrdInteractionId$fShowInteractionId$fNumInteractionId$fIntegralInteractionId$fRealInteractionId$fEnumInteractionId$fDataInteractionId$fDataImportedName'$fEqImportedName'$fOrdImportedName'$fShowImportedName' $fDataUsing' $fEqUsing'$fDataRenaming' $fEqRenaming'$fDataImportDirective'$fEqImportDirective'$fDataTerminationCheck$fShowTerminationCheck$fEqTerminationCheck$fFunctorTerminationCheck$fEqUniverseCheck$fOrdUniverseCheck$fShowUniverseCheck$fBoundedUniverseCheck$fEnumUniverseCheck$fDataUniverseCheck ProcessorLayersLayer layerRoleinterval layerContent LayerRoleMarkupCommentCode atomizeLayersliterateSrcFileliterateProcessorsisCode isCodeLayer illiterateliterateExtsShortList literateTeX literateMd literateRsT literateOrg$fHasRangeLayer$fShowLayerRole $fEqLayerRole $fShowLayerMemoKeyNodeK PostLeftsK PreRightsKTopKAppKNonfixK$fHashableMemoKey $fEqMemoKey $fShowMemoKey$fGenericMemoKeyGlobalsglobalsUsesusesmodNameexports postscriptExportexpNamedefnMemberIdGlobalIdLocalIdSelfLocalGlobal UndefinedIntegerDoubleObjectApplyLookupBinOpPreOpPlainJS $fUsesExport $fUsesExp $fUsesMap$fUses[]$fGlobalsModule$fGlobalsExport $fGlobalsExp $fGlobalsMap $fGlobals[] $fEqLocalId $fOrdLocalId $fShowLocalId $fEqGlobalId $fOrdGlobalId$fShowGlobalId $fEqMemberId $fOrdMemberId$fShowMemberId $fShowExp $fShowExport $fShowModuleshift shiftFromshifter substitutermap'subst'applyselffix curriedApply curriedLambdaempvineobjectPrettiesprettiesbrunescape unescapesblockblock'modname variableNameisValidJSIdent$fPrettyModule$fPrettyMemberId$fPrettyGlobalId$fPrettyLocalId $fPretty(,) $fPrettyExp $fPrettiesMap $fPretties[] renameOffsetFreeVarsfreeVarsOffset Weakeningweak' ExpandMetas expandMetas MetaliseOKH metaliseOKHEECtxCActionSubSkipWeakTrBrCExpClosICExp ICArgListCALNil CALConcat HNArgListHNALNilHNALCons HNALConParHNExp'HNAppHNLamHNPiHNSortHNExp WithSeenUIdsseenUIdsrawValueMArgListArgListALNilALConsALProjALConParMExpLamPiSort AbsurdLambdaappUIdappOKappHeadappElimsSet UnknownSortElrConstRef PatConAppPatVarPatExpClauseDeclContDefDatatype Constructor PostulateConstDefcdnamecdorigincdtypecdcont cddeffreevarsAbsMIdIdNoIdMyMBMyPBRefInfoRIEnv RIMainInfo RIUnifInfo RICopyInfo RIIotaStepRIInferredTypeUnknownRINotConstructor RIUsedVars RIPickSubsvar RIEqRState RICheckElimRICheckProjIndexrieHintsrieDefFreeVarsrieEqReasoningConstsriMainCxtLength riMainType riMainIotaEqReasoningStateEqRSNone EqRSChainEqRSPrf1EqRSPrf2EqRSPrf3EqReasoningConstseqrcId eqrcBegineqrcStepeqrcEndeqrcSymeqrcCongHintModeHMNormal HMRecCallUIdgetVargetConstdontCaredetecteliminanddetectsemiflexcategorizedecl metaliseokhaddtrailingargsclosifysubsubiweakdoclosfreeVarsrename$fMetaliseOKHArgList$fMetaliseOKHExp$fMetaliseOKHAbs$fMetaliseOKHMM$fExpandMetasArgList$fExpandMetasExp$fExpandMetasAbs$fExpandMetasMM$fWeakeningElr$fWeakeningICArgList$fWeakeningClos$fWeakeningTrBr$fFreeVarsArgList $fFreeVarsExp $fFreeVarsElr $fFreeVarsAbs $fFreeVarsMM $fFreeVars(,)$fRenamingArgList $fRenamingExp $fRenamingElr $fRenamingAbs $fRenamingMM $fRenaming(,)$fEqEqReasoningState$fShowEqReasoningState$fEqElr ExpRefInfoeriMaineriUnifseriInfTypeUnknowneriIsEliminand eriUsedVars eriIotaSteperiPickSubsVar eriEqRStateinitExpRefInfogetinfounivarsubsvarsnewAbsnewLamnewPifoldArgsnewArgs'newArgsnewApp'newAppeqStepeqEndeqCongeqSym eqBeginStep2pickUidextrarefcostUnificationIf costIncreasecostUnificationOccurscostUnification costAppVarcostAppVarUsed costAppHintcostAppHintUsedcostAppRecCallcostAppRecCallUsedcostAppConstructorcostAppConstructorSinglecostAppExtraRefcostLam costLamUnfoldcostPicostSort costIotaStepcostInferredTypeUnkown costAbsurdLam costEqStep costEqEnd costEqSym costEqCongprioNoprioTypeUnknownprioTypecheckArgListprioInferredTypeUnknown prioCompBetaprioCompBetaStructured prioCompIotaprioCompChoice prioCompUnif prioCompCopyprioCompareArgList prioNoIotaprioAbsurdLambda prioProjIndex prioTypecheck$fTravArgListRefInfo$fTravExpRefInfo$fTravTrBrRefInfo$fTrav(,)RefInfo $fTrav[]blk$fRefinableIORefRefInfo$fRefinableClosRefInfo$fRefinableArgListRefInfo$fRefinableExpRefInfoCMFlexCMFFlexCMFSemi CMFBlockedCModeCMRigidPEvalPENoPEConAppHNResHNDoneHNMetaHNNBlkstcExp getDatatypeconstructorImpossibleunequalsunequal traversePitcargsaddendcopyargnoblksaddblkhnnhnn_blks hnn_checkstephnn'hnbhnc hnarglistgetNArgs getAllArgsiotastep noiotastepnoiotastep_termcomp'checkeliminandmaybeor iotapossmetameta_not_constructor calcEqRStatepickidtcSearchLocalTerminationEnvsizeAndBoundVarsLiftlift'Unifyunify' notequal' AssignmentsReplacereplace'SolCSPatI CSPatConAppCSPatVarCSPatExpCSWithCSAbsurd CSOmittedArgCSCtxCSPatHI abspatvarnamecostCaseSplitVeryHighcostCaseSplitHighcostCaseSplitLowcostAddVarDepthdrophidcaseSplitSearchcaseSplitSearch' infertypevarreplace betareduce concatargsreplacepunifynotequalunifyVarunifyexplift removevarfindpermfreevars applypermrenseqctx depthofvarlocalTerminationEnvlocalTerminationSidecondgetblks $fRenamingHI$fRenamingCSPatI$fReplaceoArgListArgList $fReplaceoMMu$fReplaceoExpMM$fReplaceoAbsAbs$fUnifyoArgList $fUnifyoExp $fUnifyoAbs $fUnifyoMM $fLiftArgList $fLiftExp$fLiftMM $fLiftAbs$fLocalTerminationEnvMM$fLocalTerminationEnv(,)$fLocalTerminationEnvMM0$fLocalTerminationEnv[]$fLocalTerminationEnvCSPatI$fLocalTerminationEnvHI ParseResultParseOk ParseFailed ParseWarningOverlappingTokensWarning warnRange ParseErrorOverlappingTokensErrorInvalidExtensionError ReadFileError errSrcFileerrPoserrInput errPrevTokenerrMsgerrRangeerrPath errValidExts errIOError ParseFlagsparseKeepComments LayoutContextNoLayoutLayoutLexState ParseStatePState parseSrcFileparsePos parseLastPosparseInp parsePrevCharparsePrevToken parseLayout parseLexState parseFlagsparseWarningName parseError initStatedefaultParseFlagsparsePosString parseFromSrc setParsePos setLastPos setPrevTokengetParseInterval getLexState pushLexState popLexState getParseFlags parseErrorAt parseError'parseErrorRangelexError topContext popContext pushContextpushCurrentContext$fHasRangeParseError$fPrettyParseError$fShowParseError$fHasRangeParseWarning$fPrettyParseWarning$fShowParseWarning$fShowLayoutContext$fShowParseFlags$fShowParseState$fMonadStateParser$fMonadErrorParser$fDataParseWarning$fShowParseResult NotationKind InfixNotationPrefixNotationPostfixNotationNonfixNotation NoNotationGenPartBindHole NormalHoleWildHoleIdPartNotationHoleName LambdaHoleExprHole _bindHoleNameholeName isLambdaHole stringParts holeTargetisAHole isNormalHole isBindingHole notationKind mkNotation noNotation$fNFDataGenPart$fKillRangeGenPart$fSetRangeGenPart$fHasRangeGenPart $fOrdGenPart $fEqGenPart $fDataGenPart $fShowGenPart$fEqNotationKind$fShowNotationKindIsNoNameisNoName LensInScope lensInScope isInScope mapInScope setInScope setNotInScope NameInScopeInScope NotInScopeNumHolesnumHolesTopLevelModuleNamemoduleNameRangemoduleNamePartsNamePartHoleNoName nameRange nameInScope nameNamePartsnameId isOpenMixfix nameToRawName namePartsnameStringPartsstringNameParts isOperatorisHoleisPrefix isPostfixisInfixisNonfixnextStrnextNamefirstNonTakenNamenameRootsameRootqualify unqualify qnameParts isQualifiedtoTopLevelModuleNamemoduleNameToFileName projectRootnoName_noName$fNFDataNamePart$fPrettyNamePart$fShowNamePart $fOrdNamePart $fEqNamePart$fKillRangeTopLevelModuleName$fSetRangeTopLevelModuleName$fHasRangeTopLevelModuleName$fPrettyTopLevelModuleName$fSizedTopLevelModuleName$fOrdTopLevelModuleName$fEqTopLevelModuleName $fNumHoles[]$fNFDataNameInScope $fNFDataName$fKillRangeName$fSetRangeName$fHasRangeName $fPrettyName $fShowName$fNumHolesName $fOrdName$fUnderscoreName $fNFDataQName$fKillRangeQName$fSetRangeQName$fHasRangeQName $fPrettyQName $fShowQName$fNumHolesQName$fUnderscoreQName$fLensInScopeQName$fLensInScopeName$fLensInScopeNameInScope$fIsNoNameQName$fIsNoNameName$fIsNoNameByteString $fIsNoName[]$fDataNamePart$fGenericNamePart$fShowTopLevelModuleName$fDataTopLevelModuleName$fEqNameInScope$fShowNameInScope$fDataNameInScope $fDataName $fDataQName $fOrdQNameModuleToSourceTCMTCMTunTCMTCStateTCEnvHighlightingMethod LensAttribute AttributeRelevanceAttributeQuantityAttributerelevanceAttributeTablequantityAttributeTable attributesMapstringToAttribute setAttribute setAttributessetPristineRelevancesetPristineQuantitysetPristineAttributesetPristineAttributesisRelevanceAttributeisQuantityAttributerelevanceAttributesquantityAttributes $fEqAttribute$fOrdAttribute$fShowAttributeMkNamemkNamemkName_IsProjPisProjPAmbiguousQNameAmbQunAmbQMName mnameToListQNamedqnameqnamed qnameModule qnameName nameConcretenameBindingSite nameFixitynameIsRecordName uglyShowName unambiguousheadAmbQ isAmbiguousgetUnambiguousisAnonymousModuleName withRangesOf withRangesOfQ mnameFromList noModuleNamecommonParentModule qnameToList qnameFromList qnameToMName mnameToQName showQNameIdqnameToConcretemnameToConcretequalifyMqualifyQqualify_ isSubModuleOf isInModule$fHashableName$fNFDataModuleName$fSizedModuleName$fKillRangeModuleName$fSetRangeModuleName$fHasRangeModuleName$fPrettyModuleName$fShowModuleName $fSizedQName$fHashableQName$fPrettyQNamed$fKillRangeAmbiguousQName$fHasRangeAmbiguousQName$fPrettyAmbiguousQName$fNumHolesAmbiguousQName $fIsProjPVoid$fIsProjPNamed $fIsProjPArg $fMkName[]$fDataModuleName$fFunctorQNamed$fFoldableQNamed$fTraversableQNamed$fEqAmbiguousQName$fOrdAmbiguousQName$fDataAmbiguousQName$fShowAmbiguousQName $fShowQNamedLitNat LitWord64LitFloat LitStringLitCharLitQNameLitMeta showString' showChar' compareFloat$fNFDataLiteral$fKillRangeLiteral$fSetRangeLiteral$fHasRangeLiteral $fOrdLiteral$fPrettyLiteral $fShowLiteral $fDataLiteral isUnreachableTError TUnreachableTAltTAConTAGuardTALitaConaArityaBodyaGuardaLitCaseInfocaseLazycaseTypeCaseTypeCTDataCTNatCTIntCTCharCTStringCTFloatCTQNameTPrimPAddPAdd64PSubPSub64PMulPMul64PQuotPQuot64PRemPRem64PGeqPLtPLt64PEqIPEq64PEqFPEqSPEqCPEqQPIfPSeqPITo64P64ToITTermTVarTDefTAppTLamTLitTConTLetTCaseTUnitTSortTErasedTCoerceArgsEvaluationStrategyLazyEvaluationEagerEvaluationCompiled cTreeless cArgUsageTPFnTPOpisPrimEqmkTApptAppViewtLetViewtLamViewmkTLammkLettIntintView word64ViewtPlusK tNegPlusK plusKView negPlusKViewtOp tUnreachable tIfThenElse$fKillRangeCompiled$fUnreachableTTerm$fUnreachableTAlt$fEqEvaluationStrategy$fShowEvaluationStrategy $fDataTPrim $fShowTPrim $fEqTPrim $fOrdTPrim$fDataCaseType$fShowCaseType $fEqCaseType $fOrdCaseType$fDataCaseInfo$fShowCaseInfo $fEqCaseInfo $fOrdCaseInfo $fDataTError $fShowTError $fEqTError $fOrdTError $fDataTTerm $fShowTTerm $fEqTTerm $fOrdTTerm $fDataTAlt $fShowTAlt$fEqTAlt $fOrdTAlt$fDataCompiled$fShowCompiled $fEqCompiled $fOrdCompiled DefinitionFunDefDataDef RecordDefDataConstructorAxiom Primitive AbsurdClausePatternConPDotPVarPLitPAbsurdPProjPSetSLitSUnknownSExtLamUnknownElimsElimElim' argsToElims $fShowElim' $fShowAbs $fShowPattern $fShowClause $fShowTerm $fShowSort$fShowDefinitionToken TokKeywordTokIdTokQId TokLiteral TokSymbol TokStringTokSetNTokPropNTokTeX TokMarkup TokCommentTokDummyTokEOFSymDotSymSemiSymVirtualSemiSymBarSymColonSymArrowSymEqual SymLambda SymUnderscoreSymQuestionMarkSymAs SymOpenParen SymCloseParenSymOpenIdiomBracketSymCloseIdiomBracketSymDoubleOpenBraceSymDoubleCloseBrace SymOpenBrace SymCloseBraceSymOpenVirtualBraceSymCloseVirtualBrace SymOpenPragmaSymClosePragma SymEllipsis SymDotDot SymEndCommentKeywordKwLetKwInKwWhereKwDataKwCoDataKwDo KwPostulateKwMutual KwAbstract KwPrivate KwInstance KwOverlapKwOpenKwImportKwModule KwPrimitiveKwMacroKwInfixKwInfixLKwInfixRKwWith KwRewriteKwSetKwPropKwForallKwRecord KwConstructorKwField KwInductive KwCoInductiveKwEtaKwNoEtaKwHidingKwUsing KwRenamingKwToKwPublic KwOPTIONS KwBUILTINKwLINE KwFOREIGN KwCOMPILE KwIMPOSSIBLEKwSTATIC KwINJECTIVEKwINLINE KwNOINLINEKwETAKwNO_TERMINATION_CHECK KwTERMINATINGKwNON_TERMINATINGKwWARNING_ON_USAGE KwMEASURE KwDISPLAY KwREWRITE KwQuoteGoalKwQuoteContextKwQuote KwQuoteTerm KwUnquote KwUnquoteDecl KwUnquoteDefKwSyntax KwPatternSynKwTactic KwCATCHALL KwVariableKwNO_POSITIVITY_CHECK KwPOLARITYKwNO_UNIVERSE_CHECKlayoutKeywords$fHasRangeToken $fEqKeyword $fShowKeyword $fEqSymbol $fShowSymbolPrecedenceStack PrecedenceTopCtxFunctionSpaceDomainCtxLeftOperandCtxRightOperandCtx FunctionCtx ArgumentCtxInsideOperandCtx WithFunCtx WithArgCtx DotPatternCtxParenPreference PreferParenPreferParenlessFixity fixityRange fixityLevel fixityAssoc AssociativityNonAssoc LeftAssoc RightAssocPrecedenceLevel UnrelatedRelatedNotationSection sectNotationsectKind sectLevel sectIsSection NewNotationnotaName notaNames notaFixitynotationnotaIsOperatorThingWithFixity theFixity theNotation theNameRangenamesToNotationuseDefaultFixity notationNamessyntaxOfmergeNotations noSectionnoFixity defaultFixity preferParenpreferParenlesspushPrecedenceheadPrecedence argumentCtx_ opBrackets opBrackets' lamBrackets appBrackets appBrackets'withAppBrackets piBracketsroundFixBrackets _notaFixity _fixityAssoc _fixityLevel$fNFDataFixity$fKillRangeFixity$fHasRangeFixity $fOrdFixity $fEqFixity$fNFDataFixity'$fKillRangeFixity' $fEqFixity'$fKillRangeThingWithFixity$fPrettyPrecedence$fEqPrecedenceLevel$fOrdPrecedenceLevel$fShowPrecedenceLevel$fDataPrecedenceLevel$fEqAssociativity$fOrdAssociativity$fShowAssociativity$fDataAssociativity $fDataFixity $fShowFixity$fShowNewNotation$fShowNotationSection $fDataFixity' $fShowFixity'$fFunctorThingWithFixity$fFoldableThingWithFixity$fTraversableThingWithFixity$fDataThingWithFixity$fShowThingWithFixity$fEqParenPreference$fOrdParenPreference$fShowParenPreference$fDataParenPreference$fShowPrecedence$fDataPrecedence$fEqPrecedenceRangesfromtorangesInvariant overlappingrangeToPositionsrangesToPositionsrToRrangeToEndPointsminus $fEqRange $fOrdRange $fShowRange $fEqRanges $fShowRangesDAGdagGraphdagComponentMap dagNodeMapNodessrcNodestgtNodesallNodesEdgesourcetargetlabelGraphgraphedges neighbours neighboursMap edgesFromedgesTodiagonalnodes sourceNodes targetNodes computeNodes isolatedNodesdiscreteacyclic fromNodes fromNodeSet fromEdges fromEdgesWith insertEdgeinsertEdgeWith unionsWith mapWithEdge transposeEdge transposeclean removeNodes removeNode removeEdge filterEdges composeWithsccs'sccs dagInvariant oppositeDAG reachablesccDAG'sccDAG reachableFromreachableFromSetwalkSatisfyingcomplete completeIter1gaussJordanFloydWarshallMcNaughtonYamadaReference(gaussJordanFloydWarshallMcNaughtonYamada $fShowGraph $fPrettyGraph$fFunctorGraph $fPrettyEdge $fEqGraph$fEqEdge $fOrdEdge $fFunctorEdge $fShowEdgeBounds lowerBounds upperBounds mustBeFiniteBound SetToInfty setToInfty ConGraphsConGraphHypGraphHyp'HypGraphsNodeNodeZero NodeInfty NodeRigidNodeFlexLabelLInflcmploffsetNegativenegativeWeightInfinity LabelledEdgeKeyEdge'srcdest lookupEdge graphToList graphFromListoutgoingincomingsetFoldl transClostoWeight isFlexNode isZeroNode isInftyNodenodeToSizeExpr emptyGraphsmentionsaddEdgereflClosimpliesnodeFromSizeExpredgeFromConstraintgraphFromConstraintsgraphsFromConstraintshypGraphhypConnsimplifyWithHypothesesconstraintGraphconstraintGraphs infinityFlexs emptyBoundedgeToLowerBoundedgeToUpperBoundgraphToLowerBoundsgraphToUpperBoundsboundssmallestlargest commonSuccs commonPredslub'glb'lubglbfindRigidBelow solveGraph solveGraphsverifySolution iterateSolver testSuccstestLub$fPlusSizeExpr'WeightSizeExpr'$fPlusOffsetWeightWeight $fDioidWeight$fPlusWeightOffsetWeight $fNumWeight $fEnumWeight $fTopWeight$fMeetSemiLatticeWeight $fOrdWeight$fPrettyWeight$fNegativeWeight$fNegativeOffset $fNegativeInt$fPlusSizeExpr'LabelSizeExpr' $fDioidLabel $fTopLabel$fMeetSemiLatticeLabel $fPrettyLabel $fOrdLabel $fEqLabel$fNegativeLabel $fPrettyNode $fDioidEdge $fTopEdge$fMeetSemiLatticeEdge$fNegativeEdge$fNegativeGraph $fNegative[]$fSetToInftyfGraph$fSetToInftyfEdge$fSetToInftyfNode $fEqWeight $fShowWeight $fShowLabel $fShowNode$fEqNode $fOrdNode OccurrenceMixedJustNegJustPos StrictPosGuardPosUnusedWhere LeftOfArrowDefArgUnderInfVarArgMetaArg ConArgType IndArgTypeInClauseMatchedIsIndexInDefOf OccursWhereboundToEverySomeproductOfEdgesInBoundedWalk $fPrettyWhere$fSizedOccursWhere$fPrettyOccursWhere$fNullOccurrence$fStarSemiRingOccurrence$fSemiRingOccurrence$fKillRangeOccurrence$fNFDataOccurrence$fPrettyOccurrence $fShowWhere $fEqWhere $fOrdWhere $fDataWhere$fShowOccursWhere$fEqOccursWhere$fOrdOccursWhere$fDataOccursWhere$fDataOccurrence$fShowOccurrence$fEqOccurrence$fOrdOccurrence$fEnumOccurrence$fBoundedOccurrenceAppView HoleContent HoleContent'HoleContentExprHoleContentRewritePragma OptionsPragma BuiltinPragma RewritePragma ForeignPragma CompilePragma StaticPragma InlinePragmaImpossiblePragma EtaPragmaWarningOnUsageInjectivePragma DisplayPragmaCatchallPragmaTerminationCheckPragmaNoPositivityCheckPragmaPolarityPragmaNoUniverseCheckPragma OpenShortHandDoOpenDontOpenModuleApplication SectionAppRecordModuleInstance Declaration GeneralizeField FunClauseDataSig RecordSigInfix PatternSynMutualPrivate InstanceBMacroOpenImport ModuleMacro UnquoteDecl UnquoteDefTypeSignatureOrInstanceBlock TypeSignatureAsNameAsName'asNameasRange ExprWhere LamClauselamLHSlamRHSlamWhere lamCatchAll WhereClause'NoWhereAnyWhere SomeWhere WhereClauseRHS' AbsurdRHSRHSLHSCoreLHSHeadLHSProjLHSWith lhsDefNamelhsPats lhsDestructor lhsPatsLeftlhsFocuslhsHeadlhsWithPatternsWithExpr RewriteEqnlhsOriginalPattern lhsRewriteEqn lhsWithExpr Telescope TypedBinding'TBind TypedBinding BoundNameBName boundName bnameFixity LamBinding' DomainFree DomainFull LamBindingDoStmtDoBindDoThenDoLetIdentPQuotePAppPRawAppPOpAppPHiddenP InstancePParenPWildPAsPRecPEqualP EllipsisPWithPExpr QuestionMarkRawAppOpAppWithApp HiddenArg InstanceArg AbsurdLam ExtendedLamFunSetNPropNRec RecUpdateParen IdiomBracketsDoBlockAbsurdAsDotETel QuoteGoal QuoteContextQuote QuoteTermTacticUnquoteDontCareEqualEllipsis GeneralizedRecordAssignmentsRecordAssignmentModuleAssignment _qnameModA _exprModA_importDirModAFieldAssignmentFieldAssignment' _nameFieldA _exprFieldASyntaxBindingLambdaOrdinary fromOrdinary nameFieldA exprFieldA mkBoundName_ mkBoundName countTelVarslamBindingsToTelescopemakePitopLevelModuleNamespanAllowedBeforeModuleappViewisSingleIdentifierPremoveSingletonRawAppP$fNFDataFieldAssignment'$fKillRangeFieldAssignment'$fHasRangeFieldAssignment'$fNFDataBoundName$fKillRangeBoundName$fHasRangeBoundName$fNFDataLamBinding' $fNFDataRHS'$fNFDataWhereClause'$fNullWhereClause'$fNFDataDoStmt$fNFDataLamClause$fNFDataModuleAssignment $fNFDataLHS $fNFDataOpApp$fNFDataModuleApplication$fNFDataTypedBinding'$fNFDataAsName'$fNFDataPragma$fNFDataDeclaration$fNFDataPattern $fNFDataExpr$fKillRangeWhereClause'$fKillRangeTypedBinding'$fKillRangeRHS'$fKillRangePragma$fKillRangePattern$fKillRangeOpApp$fKillRangeModuleApplication$fKillRangeDoStmt$fKillRangeLamClause$fKillRangeLHS$fKillRangeLamBinding'$fKillRangeExpr$fKillRangeDeclaration$fKillRangeAsName'$fKillRangeModuleAssignment$fSetRangeTypedBinding'$fSetRangePattern$fHasRangePattern$fHasRangeAsName'$fHasRangePragma$fHasRangeDoStmt$fHasRangeLamClause$fHasRangeRHS' $fHasRangeLHS$fHasRangeDeclaration$fHasRangeModuleAssignment$fHasRangeModuleApplication$fHasRangeWhereClause'$fHasRangeLamBinding'$fHasRangeTypedBinding'$fHasRangeExpr$fHasRangeOpApp$fLensRelevanceTypedBinding'$fLensHidingTypedBinding'$fLensHidingLamBinding'$fHasRangeLHSCore$fDataFieldAssignment'$fFunctorFieldAssignment'$fFoldableFieldAssignment'$fTraversableFieldAssignment'$fShowFieldAssignment'$fEqFieldAssignment'$fDataBoundName $fEqBoundName$fShowBoundName$fDataLamBinding'$fFunctorLamBinding'$fFoldableLamBinding'$fTraversableLamBinding' $fDataRHS' $fFunctorRHS'$fFoldableRHS'$fTraversableRHS'$fDataWhereClause'$fFunctorWhereClause'$fFoldableWhereClause'$fTraversableWhereClause' $fDataAsName' $fShowAsName'$fFunctorAsName'$fFoldableAsName'$fTraversableAsName'$fDataOpenShortHand$fEqOpenShortHand$fShowOpenShortHand $fDataPragma $fDataPattern $fDataExpr$fDataDeclaration$fDataModuleApplication$fDataTypedBinding'$fFunctorTypedBinding'$fFoldableTypedBinding'$fTraversableTypedBinding' $fDataLHS$fDataLamClause $fDataDoStmt$fDataModuleAssignment $fDataOpApp$fFunctorOpApp$fFoldableOpApp$fTraversableOpApp$fFunctorHoleContent'$fFoldableHoleContent'$fTraversableHoleContent'Tel NamedBinding withHiding namedBindingSpecialCharacters_dbraces_lambda_arrow_forallQspecialCharactersbraces'dbracesforallQbracesAndSemicolonsarrowlambda prettyHidingprettyRelevancegetLabel isLabeledsmashTelpRecord prettyOpApp$fPrettyImportedName'$fPrettyUsing'$fPrettyImportDirective'$fPrettyPattern $fPrettyNamed $fPrettyDom $fPrettyArg$fPrettyFixity'$fPrettyGenPart$fPrettyFixity$fPrettyPragma$fPrettyOpenShortHand$fPrettyDeclaration$fPrettyDoStmt$fPrettyModuleApplication$fPrettyLHSCore $fPrettyLHS$fPrettyWhereClause' $fPrettyRHS'$fPrettyBoundName$fPrettyLamClause$fPrettyModuleAssignment$fPrettyFieldAssignment'$fPrettyEither$fPrettyMaybePlaceholder $fPrettyOpApp$fPrettyRelevance$fPrettyWithHiding$fPrettyThingWithFixity$fPrettyTypedBinding'$fPrettyLamBinding'$fPrettyNamedBinding $fPrettyTel $fPrettyExpr $fShowDoStmt$fShowModuleApplication$fShowWhereClause'$fShowLamClause $fShowLHSCore $fShowLHS $fShowRHS' $fShowPragma$fShowRenaming' $fShowUsing'$fShowImportDirective'$fShowModuleAssignment$fShowLamBinding'$fShowTypedBinding'$fShowDeclaration $fShowOpApp $fShowExprPhaseParsingDeserializationScopingTyping Termination Positivity InjectivityProjectionLikenessCoverage Highlighting SerializationDeadCodeRecCheckReduceLevelCompareWithBuildInterface BinaryEncodeCompress OperatorsExprOperatorsPatternFree OccursCheckCheckLHSCheckRHSInstanceSearch UnifyIndicesInverseScopeLookup TopModuleisModuleAccount isDefAccountisInternalAccount benchmarksbillToIO billToPure$fMonadBenchPhaseIO $fPrettyPhase $fEqPhase $fOrdPhase $fShowPhase CPatternLike foldrCPatterntraverseCPatternAtraverseCPatternMLHSPatternViewLHSAppPLHSWithPIsWithPisWithP HasEllipsis hasEllipsis IsEllipsis isEllipsislhsPatternView lhsCoreApp lhsCoreWithlhsCoreAddSpinemapLhsOriginalPatternmapLhsOriginalPatternM hasCopatterns foldCPatternpreTraverseCPatternMpostTraverseCPatternM mapCPattern patternQNames patternNameshasWithPatterns isWithPatternnumberOfWithPatterns hasEllipsis'$fIsEllipsisPattern$fHasEllipsisLHS$fHasEllipsisPattern$fIsWithPNamed $fIsWithPArg$fIsWithPPattern$fCPatternLikeFieldAssignment'$fCPatternLikeMaybe$fCPatternLike[]$fCPatternLikeNamed$fCPatternLikeArg$fCPatternLike(,)$fCPatternLikePatternNKInPrePostNon OperatorType ParseSectionsDoNotParseSectionsIsExprexprView unExprViewExprViewLocalVWildVOtherVAppVOpAppV HiddenArgV InstanceArgVLamVParenV placeholdermaybePlaceholdersatNoPlaceholderpartPatLeastTwoPartswildOrUnqualifiedNameopPargsPappP$fIsExprPattern $fIsExprExpr$fHasRangeExprView$fEqParseSections$fShowParseSectionsExprLikemapExpr traverseExprfoldExpr$fExprLikeDeclaration$fExprLikeModuleApplication$fExprLikeDoStmt$fExprLikeLamClause $fExprLikeLHS$fExprLikeLamBinding'$fExprLikeOpApp$fExprLikeModuleAssignment$fExprLikeFieldAssignment'$fExprLikeExpr$fExprLike(,,,)$fExprLike(,,) $fExprLike(,)$fExprLikeWhereClause'$fExprLikeRHS'$fExprLikeTypedBinding'$fExprLikeEither$fExprLikeMaybePlaceholder$fExprLikeMaybe $fExprLike[] $fExprLikeArg$fExprLikeNamed$fExprLikeBool$fExprLikeQName$fExprLikeNameDoWarnNoWarnMonadFixityErrorthrowMultipleFixityDeclsthrowMultiplePolarityPragmaswarnUnknownNamesInFixityDecl!warnUnknownNamesInPolarityPragmaswarnUnknownFixityInMixfixDecl#warnPolarityPragmasButNotPostulatesFixitiesfixitiesAndPolarities$fMonoidMonadicFixPol$fSemigroupMonadicFixPol$fMonoidDeclaredNames$fSemigroupDeclaredNames $fEqDoWarn $fShowDoWarnCompressedFilerangesHighlightingInfoFilemapping TokenBasedNotOnlyTokenBasedDefinitionSite defSiteModule defSitePos defSiteHere defSiteAnchorAspectsaspect otherAspectsnotedefinitionSite tokenBased OtherAspect DottedPattern UnsolvedMetaUnsolvedConstraintTerminationProblemPositivityProblemDeadcodeCoverageProblemIncompletePattern TypeChecksCatchallClauseNameKind GeneralizableFunctionArgumentAspectNumber PrimitiveType Background parserBasedseveralmerge smallestPostoMapcompressedFileInvariantcompress decompressnoHighlightingInRange singletonCseveralCmergeCsplitAtCselectC smallestPosC$fEqDefinitionSite$fMonoidTokenBased$fSemigroupTokenBased$fMonoidAspects$fSemigroupAspects $fEqAspects $fMonoidFile$fSemigroupFile$fMonoidCompressedFile$fSemigroupCompressedFile $fEqNameKind$fShowNameKind $fEqAspect $fShowAspect$fEqOtherAspect$fOrdOtherAspect$fShowOtherAspect$fEnumOtherAspect$fBoundedOtherAspect$fShowDefinitionSite$fEqTokenBased$fShowTokenBased $fShowAspects$fEqFile $fShowFile$fEqCompressedFile$fShowCompressedFileInteractionOutputCallback GiveResult Give_String Give_Paren Give_NoParenStatussShowImplicitArgumentssChecked DisplayInfoInfo_CompilationOkInfo_ConstraintsInfo_AllGoalsWarnings Info_Time Info_Error Info_Intro Info_AutoInfo_ModuleContentsInfo_SearchAboutInfo_WhyInScopeInfo_NormalForm Info_GoalTypeInfo_CurrentGoalInfo_InferredType Info_ContextInfo_HelperFunction Info_VersionMakeCaseVariantExtendedLambdaRemoveTokenBasedHighlightingRemoveHighlightingKeepHighlightingResponseResp_HighlightingInfo Resp_StatusResp_JumpToErrorResp_InteractionPointsResp_GiveAction Resp_MakeCase Resp_SolveAllResp_DisplayInfoResp_RunningInfoResp_ClearRunningInfoResp_ClearHighlightingResp_DoneAborting defaultInteractionOutputCallback$fShowDisplayInfo CompareResult Dominates IsDominated dominated notDominated dominator FavoritescompareWithFavoritescompareFavorites unionComparedinsertCompared$fMonoidFavorites$fSemigroupFavorites $fEqFavorites$fFoldableFavorites$fShowFavorites$fNullFavorites$fSingletonFavorites AssocListupdate mapWithKey mapWithKeyMAllowAmbiguousNamesAmbiguousAnythingAmbiguousConProjsAmbiguousNothing UsingOrHiding ResolvedNameVarName DefinedName FieldNameConstructorNamePatternSynResName UnknownName resolvedVarresolvedBinderAbstractModule AbsModuleamodName amodLineage NameMetadata NoMetadataGeneralizedVarsMetadata AbstractNameAbsName anameName anameKind anameLineage anameMetadata WhyInScopeDefinedOpenedApplied KindOfNameConNameFldNameDefNamePatternSynNameGeneralizeNameDisallowedGeneralizeName MacroName QuotableName inScopeTag InScopeTagNameTag ModuleTag InScopeSetModulesInScope NamesInScope ThingsInScope NameSpacensNames nsModules nsInScopeLocalVarlocalVar localBinderlocalShadowedByBinder LambdaBound PatternBoundLetBound LocalVars ModuleMapNameMap ScopeInfo scopeCurrent scopeModulesscopeVarsToBind scopeLocalsscopePrecedencescopeInverseNamescopeInverseModule scopeInScope scopeFixitiesscopePolaritiesScopeNameSpaces NameSpaceId PrivateNSPublicNS ImportedNSOnlyQualifiedNSScope scopeName scopeParentsscopeNameSpaces scopeImportsscopeDatatypeModulelocalNameSpacenameSpaceAccessscopeNameSpaceupdateScopeNameSpacesupdateScopeNameSpacesM shadowLocalpatternToModuleBoundnotShadowedLocalnotShadowedLocalsupdateVarsToBind setVarsToBindupdateScopeLocalssetScopeLocals mapScopeInfo inNameSpaceallKindsOfNames lensAnameName lensAmodName mergeNamesemptyNameSpace mapNameSpace zipNameSpace mapNameSpaceM emptyScopeemptyScopeInfomapScope mapScope_ mapScope' mapScopeM mapScopeM_zipScope zipScope_recomputeInScopeSets filterScopeallNamesInScopeallNamesInScope'exportedNamesInScope namesInScopeallThingsInScope thingsInScope mergeScope mergeScopessetScopeAccess setNameSpacemodifyNameSpaceaddNamesToScopeaddNameToScoperemoveNameFromScopeaddModuleToScope usingOrHidingapplyImportDirectiverenameCanonicalNamesrestrictPrivaterestrictLocalPrivateremoveOnlyQualifieddisallowGeneralizedVarsinScopeBecause publicModules publicNameseverythingInScopeeverythingInScopeQualified flattenScopeconcreteNamesInScope scopeLookup scopeLookup' isNameInScopeinverseScopeLookupinverseScopeLookup'recomputeInverseScopeMapsinverseScopeLookupNameinverseScopeLookupName'inverseScopeLookupModuleprettyNameSpace blockOfLines$fPrettyNameSpaceId$fSetRangeAbstractName$fHasRangeAbstractName$fPrettyAbstractName$fOrdAbstractName$fEqAbstractName$fPrettyLocalVar $fOrdLocalVar $fEqLocalVar$fPrettyAbstractModule$fOrdAbstractModule$fEqAbstractModule$fInScopeAbstractModule$fInScopeAbstractName$fPrettyNameSpace $fPrettyScope$fKillRangeScopeInfo$fPrettyScopeInfo $fEqScopeInfo$fPrettyResolvedName$fDataNameSpaceId$fEqNameSpaceId$fBoundedNameSpaceId$fEnumNameSpaceId$fShowNameSpaceId $fDataBinder $fShowBinder $fEqBinder$fEqKindOfName$fShowKindOfName$fDataKindOfName$fEnumKindOfName$fBoundedKindOfName$fDataWhyInScope$fShowWhyInScope$fDataNameMetadata$fShowNameMetadata$fDataAbstractName$fShowAbstractName$fDataLocalVar$fShowLocalVar$fDataAbstractModule$fShowAbstractModule$fDataNameSpace $fEqNameSpace$fShowNameSpace $fDataScope $fEqScope $fShowScope$fDataScopeInfo$fShowScopeInfo$fDataResolvedName$fShowResolvedName$fEqResolvedName$fEqAllowAmbiguousNamesdontDescendIntoinstanceUniverseBiT'instanceTransformBiMT' ConPatLazy ConPatEager ConPatInfo patOriginpatInfopatLazyPatInfoPatRangeLHSInfoLHSRange MutualInfomutualTermCheckmutualPositivityCheck mutualRangeDeclInfodeclName declRangeDefInfo defFixity defAccess defAbstract defInstancedefMacrodefInfoLetInfoLetRange ModuleInfo minfoRange minfoAsTo minfoAsNameminfoOpenShortminfoDirectiveAppInfoappRange appOrigin appParensExprInfo ExprRangeMetaInfo metaRange metaScope metaNumbermetaNameSuggestion emptyMetaInfo exprNoRangedefaultAppInfodefaultAppInfo_ mkDefInfomkDefInfoInstance patNoRange$fKillRangeMetaInfo$fHasRangeMetaInfo$fKillRangeExprInfo$fHasRangeExprInfo$fLensOriginAppInfo$fKillRangeAppInfo$fHasRangeAppInfo$fKillRangeModuleInfo$fSetRangeModuleInfo$fHasRangeModuleInfo$fKillRangeLetInfo$fHasRangeLetInfo$fKillRangeDeclInfo$fSetRangeDeclInfo$fHasRangeDeclInfo$fKillRangeDefInfo$fSetRangeDefInfo$fHasRangeDefInfo$fKillRangeMutualInfo$fHasRangeMutualInfo$fNullMutualInfo$fKillRangeLHSInfo$fHasRangeLHSInfo$fSetRangeConPatInfo$fKillRangeConPatInfo$fHasRangeConPatInfo$fShowConPatInfo$fDataMetaInfo$fShowMetaInfo $fEqMetaInfo$fDataExprInfo$fShowExprInfo $fEqExprInfo$fNullExprInfo $fDataAppInfo $fShowAppInfo $fEqAppInfo $fOrdAppInfo$fDataModuleInfo$fEqModuleInfo $fDataLetInfo $fShowLetInfo $fEqLetInfo $fNullLetInfo$fDataDeclInfo$fShowDeclInfo $fEqDeclInfo $fDataDefInfo $fShowDefInfo $fEqDefInfo$fDataMutualInfo$fShowMutualInfo$fEqMutualInfo $fDataLHSInfo $fShowLHSInfo $fEqLHSInfo $fNullLHSInfo $fDataPatInfo $fEqPatInfo $fNullPatInfo $fShowPatInfo$fSetRangePatInfo$fHasRangePatInfo$fKillRangePatInfo$fDataConPatLazy$fEqConPatLazy$fOrdConPatLazy$fShowConPatLazy$fBoundedConPatLazy$fEnumConPatLazy$fDataConPatInfo$fEqConPatInfo$fShowModuleInfoDiagonalMatrixunMMIxrowcolSizerowscolssquaresupSize fromIndexList fromLists toSparseRowstoLists isSingleton zipAssocWith zipMatrices intersectWithinterAssocWith addColumnaddRow $fShowMatrix$fPartialOrdMatrix$fDiagonalMatrixb$fPrettyMatrix$fTransposeMatrix$fTransposeMIx$fTransposeSize$fEqSize $fOrdSize $fShowSize$fEqMIx$fOrdMIx $fShowMIx$fIxMIx $fEqMatrix $fOrdMatrix$fFunctorMatrix$fFoldableMatrix$fTraversableMatrixNotWorsenotWorseOrderDecrMatincreasedecrease setUsabilitydecrorderMatisOrderleltunknown nonIncreasing decreasingisDecr.*. collapseOsupremuminfimum orderSemiring $fPrettyOrder$fPartialOrdOrder$fHasZeroOrder$fNotWorseMatrix$fNotWorseOrder $fEqOrder $fOrdOrder $fShowOrderCMSetcmSet CallMatrixAug augCallMatrix augCallInfoCallComb>*< CallMatrix CallMatrix'mat ArgumentIndexnoAug$fDiagonalCallMatrix'a$fPrettyCallMatrix'$fCallCombCallMatrix'$fPrettyCallMatrixAug$fCallCombCallMatrixAug$fNotWorseCallMatrixAug$fPartialOrdCallMatrixAug$fDiagonalCallMatrixAugOrder $fPrettyCMSet$fCallCombCMSet$fEqCallMatrix'$fOrdCallMatrix'$fShowCallMatrix'$fFunctorCallMatrix'$fFoldableCallMatrix'$fTraversableCallMatrix'$fPartialOrdCallMatrix'$fEqCallMatrixAug$fShowCallMatrixAug $fShowCMSet$fSemigroupCMSet $fMonoidCMSet $fNullCMSet$fSingletonCMSet$fNotWorseCallMatrix' CallGraph theCallGraphCall callMatrixSetmkCallmkCall'completionStep$fPrettyCallGraph$fMonoidCallGraph$fSemigroupCallGraph$fNullCallGraph$fCombineNewOldGraph$fCombineNewOldFavorites$fShowCallGraph$fCombineNewOldCMSet terminatesterminatesFilterendos idempotent LexPredicate LexAction TokenLength CurrentInput PreviousInput AlexInput lexSrcFilelexPoslexInput lexPrevChar lensLexInputalexInputPrevChar alexGetChar alexGetByte getLexInput setLexInput.&&..||.not' LookAheadlookAheadErrorgetInputsetInputnextCharsyncrollback eatNextCharmatchmatch' runLookAhead$fFunctorLookAhead$fApplicativeLookAhead$fMonadLookAhead litStringlitCharinStateeof followedByliteral identifiersymbolkeywordend_begin_endWith beginWithbegin withLayout withInterval' withIntervallexToken emptyLayoutnewLayoutContext offsideRule keepComments keepCommentsM nestedCommenthole skipBlock AlexReturnAlexEOF AlexErrorAlexSkip AlexTokennormallayout empty_layoutbolimp_dirlexercode alexScanUser tokensParser exprParserexprWhereParser moduleParsermoduleNameParserholeContentParser splitOnDots$fSetRangeAttr$fHasRangeAttr$fEqRecordDirective$fShowRecordDirective$fShowRHSOrTypeSigs withInterval_end openBrace closeBraceTermSizetermSizetsize IsProjElim isProjElimSuggestsuggestSgTelsgTel TelToArgs telToArgsListTelListTel' IntervalViewIZeroIOneIMinIMaxINegOTermPathViewPathTypeOTypepathSortpathName pathLevelpathTypepathLhspathRhs EqualityView EqualityType OtherTypeeqtSorteqtName eqtParamseqtTypeeqtLhseqtRhsPatternSubstitution Substitution'IdSEmptyS:# StrengthenWk PatternVars patternVarsConPatternInfo conPRecordconPFallThroughconPTypeconPLazyDeBruijnPatternDBPatVar dbPatVarName dbPatVarIndexPattern'IApplyPDefP PatOrigin PatOSystem PatOSplitPatOVarPatODotPatOWildPatOConPatORecPatOLit PatOAbsurd PatVarNameclauseLHSRangeclauseFullRange clauseTelnamedClausePats clauseBody clauseTypeclauseCatchallclauseUnreachableNAPsBlocked_ NotBlockedtheBlockingMetaignoreBlockingblockingStatusStuckOn Underapplied AbsurdMatchMissingClausesReallyNotBlocked LevelAtom MetaLevel BlockedLevel NeutralLevelUnreducedLevel PlusLevel ClosedLevelMaxInfSizeUnivPiSortUnivSortMetaSDefSDummySTeleEmptyTel ExtendTelLensSortlensSortgetSortType'El_getSortunElNoAbsabsNameunAbsArgNameProjIApplyConInfoMetaVDummy LensConName getConName setConName mapConNameConHeadconName conInductive conFields NamedArgsargNameToStringstringToArgNameappendArgNames nameToArgName namedArgNamestuckOn clausePatspatVarNameToStringnameToPatVarNamevarPdotP namedVarP namedDBVarPnoConPatternInfotoConPatternInfofromConPatternInfo patternOriginproperlyMatchingisEqualityType isPathType absurdBody isAbsurdBodyabsurdPatternNameisAbsurdPatternNamevar dummyTerm' dummyLevel' dummyTerm dummyLevel dummySort dummyTypedummyDomunreducedLevelsortvarSorttmSortlevelSucmkTypemkPropisSortimpossibleTerm mapAbsNamesM mapAbsNamesreplaceEmptyName telFromList' telFromList telToListlistTel blockingMetablocked notBlocked stripDontCarearityunSpineunSpine'hasElims isApplyElim isApplyElim' allApplyElimssplitApplyElims argsFromElims allProjElims$fKillRangeConHead$fHasRangeConHead$fPrettyConHead $fOrdConHead $fEqConHead$fLensConNameConHead$fSetRangeConHead$fKillRangeElim'$fLensOriginElim'$fKillRangeAbs $fSizedAbs$fDecorationAbs$fKillRangeTele $fSizedTele $fNullTele$fKillRangeSort$fKillRangeType'$fKillRangeLevelAtom$fKillRangePlusLevel$fKillRangeLevel$fKillRangeTerm$fMonoidNotBlocked$fSemigroupNotBlocked$fDecorationType' $fLensSortAbs $fLensSortArg $fLensSortDom$fLensSortType'$fKillRangeBlocked$fApplicativeBlocked$fMonoidBlocked$fSemigroupBlocked$fKillRangePatOrigin$fKillRangeDBPatVar$fKillRangeConPatternInfo$fKillRangePattern'$fIsProjPPattern'$fKillRangeClause $fNullClause$fHasRangeClause$fPatternVarsa[]$fPatternVarsaArg$fPatternVarsaArg0$fNullSubstitution'$fKillRangeSubstitution'$fTelToArgsTele $fTelToArgs[] $fSgTelDom $fSgTelDom0 $fSgTel(,)$fSuggestNameAbs$fSuggest[]Abs$fSuggestAbsAbs $fSuggest[][]$fIsProjElimElim'$fTermSizeSubstitution'$fTermSizeLevelAtom$fTermSizePlusLevel$fTermSizeLevel$fTermSizeSort$fTermSizeTerm $fTermSizet $fDataConHead $fShowConHead $fDataElim'$fFunctorElim'$fFoldableElim'$fTraversableElim' $fDataAbs $fFunctorAbs $fFoldableAbs$fTraversableAbs $fDataTele $fShowTele $fFunctorTele$fFoldableTele$fTraversableTele$fShowNotBlocked$fDataNotBlocked $fDataTerm $fShowLevel $fDataLevel$fShowPlusLevel$fDataPlusLevel$fShowLevelAtom$fDataLevelAtom $fDataSort $fDataType' $fShowType'$fFunctorType'$fFoldableType'$fTraversableType' $fShowBlocked$fFunctorBlocked$fFoldableBlocked$fTraversableBlocked$fDataPatOrigin$fShowPatOrigin $fEqPatOrigin$fDataDBPatVar$fShowDBPatVar $fEqDBPatVar$fDataConPatternInfo$fShowConPatternInfo$fDataPattern'$fShowPattern'$fFunctorPattern'$fFoldablePattern'$fTraversablePattern' $fDataClause$fShowSubstitution'$fFunctorSubstitution'$fFoldableSubstitution'$fTraversableSubstitution'$fDataSubstitution'$fShowIntervalView$fUniverseBi(,)Pattern'$fUniverseBi[]Pattern'$fUniverseBi[]Pattern'0$fUniverseBi(,)Term$fUniverseBi[]Term$fUniverseBi[]Term0pDom $fNFDataElim'$fNFDataLevelAtom$fNFDataPlusLevel $fNFDataLevel $fNFDataSort $fNFDataType' $fNFDataTerm$fPrettyPattern'$fPrettyDBPatVar $fPrettyElim' $fPrettyType' $fPrettySort$fPrettyLevelAtom$fPrettyPlusLevel $fPrettyLevel $fPrettyTele$fPrettyClause $fPrettyTerm$fPrettySubstitution'$fUniverseBi[]Term1DeBruijn deBruijnVardebruijnNamedVar deBruijnView$fDeBruijnDBPatVar$fDeBruijnLevel$fDeBruijnPlusLevel$fDeBruijnLevelAtom$fDeBruijnTermPrecomputeFreeVarsprecomputeFreeVarsprecomputeFreeVars_precomputedFreeVars$fPrecomputeFreeVars(,)$fPrecomputeFreeVarsMaybe$fPrecomputeFreeVars[]$fPrecomputeFreeVarsElim'$fPrecomputeFreeVarsType'$fPrecomputeFreeVarsLevelAtom$fPrecomputeFreeVarsPlusLevel$fPrecomputeFreeVarsLevel$fPrecomputeFreeVarsSort$fPrecomputeFreeVarsTerm$fPrecomputeFreeVarsAbs$fPrecomputeFreeVarsDom$fPrecomputeFreeVarsArg freeVars'FreeM SingleVarVariableFreeEnv feIgnoreSorts feFlexRig feRelevance feSingleton IgnoreSorts IgnoreNotIgnoreInAnnotations IgnoreAllVarMap theVarMap TheVarMapIsVarSet withVarOccVarOcc varFlexRig varRelevanceFlexRigFlexible WeaklyRigid Unguarded StronglyRigidMetaSetcomposeFlexRig maxVarOcc topVarOcc botVarOcc composeVarOcc mapVarMap initFreeEnvrunFreeMvariablesubVarbindbind'gogoRelunderConstructor$fLensRelevanceVarOcc$fIsVarSetVarMap$fMonoidVarMap$fSemigroupVarMap$fMonoidReaderT$fSemigroupReaderT$fFreeEqualityView $fFreeClause $fFreeTele $fFreeAbs $fFreeDom $fFreeArg $fFreeElim' $fFree(,) $fFreeMaybe$fFree[]$fFreeLevelAtom$fFreePlusLevel $fFreeLevel $fFreeSort $fFreeType' $fFreeTerm $fEqFlexRig $fOrdFlexRig $fShowFlexRig $fEqVarOcc $fShowVarOcc$fEqIgnoreSorts$fShowIgnoreSorts $fShowVarMap$fSingletonVarMap VarCounts varCounts NoOccurrence IrrelevantlyFVstronglyRigidVars unguardedVarsweaklyRigidVars flexibleVarsirrelevantVars rigidVars relevantVarsallVars occurrencerunFreefreeInfreeInIgnoringSortsrelevantInIgnoringSortAnn relevantIn isBinderUsedclosed allFreeVarsallFreeVarsWithOccallRelevantVarsIgnoringallRelevantVars $fIsVarSetAll $fIsVarSetAny $fIsVarSet[]$fIsVarSetIntSet$fIsVarSetFreeVars$fSingletonIntFreeVars$fMonoidFreeVars$fSemigroupFreeVars$fNullFreeVars$fSingletonIntVarCounts$fIsVarSetVarCounts$fMonoidVarCounts$fSemigroupVarCounts$fIsVarSetRelevantIn $fEqFreeVars$fShowFreeVars$fSemigroupRelevantIn$fMonoidRelevantInSubst applySubstabstractapplyEapplysapply1raise raiseFrom strengthen substUnderidSwkSraiseSconsS singletonSinplaceSdropScomposeSsplitS++#prependS parallelScompactS strengthenSlookupSabsApp lazyAbsAppnoabsAppabsBodymkAbsreAbsunderAbs underLambdas$fSubstTermQNameSplitTreeLabellblConstructorName lblSplitArg lblBindingsSplitTagSplitConSplitLit SplitCatchall SplitTrees' SplitTree' SplittingDoneSplitAt splitBindingssplitArg splitTrees SplitTrees SplitTreetoTreetoTrees$fKillRangeSplitTree'$fPrettySplitTree'$fKillRangeSplitTag$fPrettySplitTag$fPrettySplitTreeLabel$fDataSplitTree'$fShowSplitTree'$fShowSplitTag $fEqSplitTag $fOrdSplitTag$fDataSplitTagTermLike traverseTermMcopyTerm$fTermLikeEqualityView$fTermLikeSort$fTermLikeType'$fTermLikeLevelAtom$fTermLikePlusLevel$fTermLikeLevel$fTermLikeTerm$fTermLike(,,,)$fTermLike(,,) $fTermLike(,)$fTermLikeTele$fTermLikeBlocked $fTermLikeAbs$fTermLikeMaybe $fTermLike[] $fTermLikeDom $fTermLikeArg$fTermLikeElim'$fTermLikeQName$fTermLikeChar$fTermLikeInteger $fTermLikeInt$fTermLikeBoolCompiledClausesCompiledClauses'DoneFailBranches projPatterns conBranches etaBranch litBranchescatchAllBranch fallThrough lazyMatch WithAritycontentlitCaseconCaseetaCaseprojCasecatchAllcheckLazyMatch hasCatchAllhasProjectionPatterns prettyMap$fTermLikeWithArity$fKillRangeWithArity$fPrettyWithArity$fMonoidWithArity$fSemigroupWithArity$fTermLikeCase$fKillRangeCase $fPrettyCase $fNullCase $fMonoidCase$fSemigroupCase$fTermLikeCompiledClauses'$fKillRangeCompiledClauses'$fPrettyCompiledClauses'$fDataWithArity$fFunctorWithArity$fFoldableWithArity$fTraversableWithArity$fShowWithArity $fDataCase $fFunctorCase$fFoldableCase$fTraversableCase $fShowCase$fDataCompiledClauses'$fFunctorCompiledClauses'$fTraversableCompiledClauses'$fFoldableCompiledClauses'$fShowCompiledClauses'GetDefsgetDefs MonadGetDefsdoDefdoMeta GetDefsEnv lookupMetaembDefGetDefsMgetDefs' $fGetDefs(,) $fGetDefsAbs $fGetDefsDom $fGetDefsArg$fGetDefsElim' $fGetDefs[]$fGetDefsMaybe$fGetDefsLevelAtom$fGetDefsPlusLevel$fGetDefsLevel $fGetDefsSort$fGetDefsType'$fGetDefsMetaId $fGetDefsTerm$fGetDefsClause$fMonadGetDefsReaderTPatterns PatternSynPLHSCore'lhsInfolhsCoreSpineLHS spLhsInfo spLhsDefName spLhsPatsWithRHS RewriteRHSrhsExpr rhsConcrete rewriteExprsrewriteStrippedPats rewriteRHSrewriteWhereDecls SpineClauseWhereDeclarations WhereDecls whereModule whereDeclsClause' clauseLHSclauseStrippedPats clauseRHSclauseWhereDecls ProblemEq problemInPat problemInst problemType DataDefParamsdataDefGeneralizedParams dataDefParamsGeneralizeTelescope GeneralizeTelgeneralizeTelVars generalizeTel LetBindingLetBind LetPatBindLetApplyLetOpenLetDeclaredVariableBuiltinNoDefPragma GetDefInfo getDefInfoSectionRecSigRecDef PatternSynDef ScopedDecl ScopeCopyInfo renModulesrenNamesRenFunSigNoFunSig RecordAssigns RecordAssignAssignsAssign ScopedExprBindNameunBind generalized initCopyInfonoDataDefParams noWhereDecls $fOrdBindName $fEqBindName$fKillRangeScopeCopyInfo$fPrettyScopeCopyInfo$fSetRangePattern'$fHasRangePattern'$fKillRangeLHSCore'$fHasRangeLHSCore'$fKillRangeLetBinding$fKillRangeWhereDeclarations$fKillRangeRHS$fKillRangeProblemEq$fKillRangeClause'$fKillRangeTypedBinding$fKillRangeDataDefParams$fKillRangeGeneralizeTelescope$fKillRangeLamBinding$fHasRangeLetBinding$fHasRangeWhereDeclarations $fHasRangeRHS$fHasRangeClause'$fHasRangeTypedBinding$fHasRangeLamBinding$fLensHidingTypedBinding$fLensHidingLamBinding$fUnderscoreExpr$fEqDeclaration$fEqExpr $fIsProjPExpr$fEqLHS$fEqRHS $fEqProblemEq$fGetDefInfoDeclaration$fKillRangeSpineLHS$fHasRangeSpineLHS$fShowBindName$fDataBindName$fHasRangeBindName$fSetRangeBindName$fKillRangeBindName $fDataAxiom $fEqAxiom $fOrdAxiom $fShowAxiom$fEqScopeCopyInfo$fShowScopeCopyInfo$fDataScopeCopyInfo $fEqPattern'$fDataLHSCore'$fShowLHSCore'$fFunctorLHSCore'$fFoldableLHSCore'$fTraversableLHSCore' $fEqLHSCore' $fDataClause' $fShowClause'$fFunctorClause'$fFoldableClause'$fTraversableClause' $fEqClause' $fDataRHS $fShowRHS$fDataWhereDeclarations$fShowWhereDeclarations$fEqWhereDeclarations$fDataDataDefParams$fShowDataDefParams$fEqDataDefParams$fDataLamBinding$fShowLamBinding$fEqLamBinding$fDataTypedBinding$fShowTypedBinding$fEqTypedBinding$fDataLetBinding$fShowLetBinding$fEqLetBinding$fEqModuleApplication$fDataGeneralizeTelescope$fShowGeneralizeTelescope$fEqGeneralizeTelescope $fEqPragma$fDataProblemEq$fShowProblemEq$fDataSpineLHS$fShowSpineLHS $fEqSpineLHS$fUniverseBiDeclarationQName%$fUniverseBiDeclarationAmbiguousQName$fUniverseBiDeclarationExpr!$fUniverseBiDeclarationLetBinding!$fUniverseBiDeclarationLamBinding#$fUniverseBiDeclarationTypedBinding$fUniverseBiDeclarationPattern' $fUniverseBiDeclarationPattern'0"$fUniverseBiDeclarationDeclaration!$fUniverseBiDeclarationModuleName!$fUniverseBiDeclarationModuleInfo$fUniverseBiDeclarationArg$fUniverseBiDeclarationArg0$fUniverseBiDeclarationArg1 SubstExpr substExprPatternSynDefnsPatternSynDefn NameToExprnameExpr AnyAbstract anyAbstractAllNamesallNames axiomNameapp patternToExprlambdaLiftExprinsertImplicitPatSynArgs$fUniverseBiDeclarationArg2$fAllNamesModuleApplication$fAllNamesLetBinding$fAllNamesTypedBinding$fAllNamesLamBinding$fAllNamesExpr$fAllNamesWhereDeclarations $fAllNamesRHS$fAllNamesClause'$fAllNamesDeclaration$fAllNamesQName $fAllNames(,)$fAllNamesNamed $fAllNamesArg$fAllNamesMaybe $fAllNames[]$fAnyAbstractDeclaration$fAnyAbstract[]$fNameToExprResolvedName$fNameToExprAbstractName$fSubstExprTypedBinding$fSubstExprLetBinding$fSubstExprExpr$fSubstExprFieldAssignment'$fSubstExprModuleName$fSubstExprName$fSubstExprEither$fSubstExpr(,)$fSubstExprNamed$fSubstExprArg $fSubstExpr[]PatternVarModalitiespatternVarModalitiesCountPatternVarscountPatternVars PatternLike foldrPatterntraversePatternMMapNamedArgPatternmapNamedArgPattern LabelPatVars labelPatVarsunlabelPatVarsFunArityfunArity clauseArgs clauseElimsunnumberPatVars dbPatPerm dbPatPerm' clausePerm patternToElimpatternsToElims patternToTerm foldPatternpreTraversePatternMpostTraversePatternM $fFunArity[]$fFunArityClause $fFunArity[]0!$fLabelPatVarsPattern'Pattern'Int$fLabelPatVars[][]i$fLabelPatVarsNamedNamedi$fLabelPatVarsArgArgi$fMapNamedArgPatterna[]$fMapNamedArgPatternaArg$fPatternLikeaNamed$fPatternLikeaArg$fPatternLikea[]$fPatternLikeaPattern'$fCountPatternVarsPattern'$fCountPatternVarsNamed$fCountPatternVarsArg$fCountPatternVars[]$fPatternVarModalitiesPattern'x$fPatternVarModalitiesElim'x$fPatternVarModalitiesArgx$fPatternVarModalitiesNamedx$fPatternVarModalities[]x recurseExprLamViewAppView' ApplicationappView'maybeProjTurnPostfix unAppViewlamViewasViewisSetunScope deepUnscopedeepUnscopeDeclsdeepUnscopeDecl$fExprLikeSpineLHS$fExprLikeLHSCore'$fExprLikePragma$fExprLikeWhereDeclarations $fExprLikeRHS$fExprLikeClause'$fExprLikePattern'$fExprLikeLetBinding$fExprLikeTypedBinding$fExprLikeDataDefParams$fExprLikeGeneralizeTelescope$fExprLikeLamBinding$fExprLikeModuleName$fExprLikeVoid$fFunctorAppView'mergePatternSynDefsmatchPatternSynmatchPatternSynP LHSToSpine lhsToSpine spineToLhsLHSProjP foldrAPatterntraverseAPatternMNAP foldAPatternpreTraverseAPatternMpostTraverseAPatternM mapAPatterncontainsAPatterncontainsAbsurdPatterncontainsAsPatterncheckPatternLinearity substPattern substPattern'splitOffTrailingWithPatternstrailingWithPatternslhsCoreToSpinespineToLhsCorelhsCoreAddChunklhsCoreAllPatternslhsCoreToPattern mapLHSHead$fIsWithPPattern'$fMapNamedArgPattern(,)$fMapNamedArgPatternMaybe$$fMapNamedArgPatternFieldAssignment'$fMapNamedArgPattern[]$fMapNamedArgPatternArg$fAPatternLikea(,)$fAPatternLikeaFieldAssignment'$fAPatternLikeaMaybe$fAPatternLikea[]$fAPatternLikeaNamed$fAPatternLikeaArg$fAPatternLikeaPattern'$fLHSToSpineLHSSpineLHS$fLHSToSpine[][]$fLHSToSpineClause'Clause'$fShowLHSPatternView Constant1 Constant0Curryinguncurryscurrys CoDomain'CoDomainDomains'DomainsIsBaseProductsArrowsConstantConsMap1ConsMap0MapFoldr'Foldr $fCurrying:b $fCurrying[]b KnownBoolboolSingSBoolSTrueSFalse eraseSBoolboolVal$fKnownBoolFalse$fKnownBoolTrueUpdater2updater2updates2update2Updater1updater1updates1update1ChangeUpdater MonadChange tellDirty listenDirty runChange runUpdaterdirtyifDirtysharing$fMonadChangeIdentity$fMonadChangeChangeT$fMonadChangeChange $fUpdater1[]$fUpdater1Maybe$fUpdater2Either $fUpdater2(,)$fFunctorChangeT$fApplicativeChangeT$fMonadChangeT$fMonadTransChangeT$fFunctorChange$fApplicativeChange $fMonadChangeNiceDeclarationWarning EmptyAbstract EmptyInstance EmptyMacro EmptyMutualEmptyPostulate EmptyPrivateEmptyGeneralizeEmptyPrimitiveInvalidCatchallPragmaInvalidNoPositivityCheckPragmaInvalidNoUniverseCheckPragmaInvalidTerminationCheckPragmaMissingDefinitionsNotAllowedInMutualPolarityPragmasButNotPostulatesPragmaNoTerminationCheckPragmaCompiledUnknownFixityInMixfixDeclUnknownNamesInFixityDeclUnknownNamesInPolarityPragmasUselessAbstractUselessInstanceUselessPrivateDeclarationExceptionMultipleEllipses InvalidNameDuplicateDefinitionMissingWithClausesWrongDefinitionCodataDeclarationPanicWrongContentBlockAmbiguousFunClausesInvalidMeasureMutualUnquoteDefRequiresSignature BadMacroDefNiceTypeSignatureNiceConstructorMeasureNiceDeclaration NiceFieldPrimitiveFunction NiceMutual NiceModuleNiceModuleMacroNiceOpen NiceImport NicePragma NiceRecSig NiceDataSig NiceFunClause NiceDataDef NiceRecDefNicePatternSynNiceGeneralizeNiceUnquoteDeclNiceUnquoteDefdeclarationWarningNamerunNiceniceDeclarationsnotSoNiceDeclarationsniceHasAbstract$fPrettyNiceDeclaration$fHasRangeNiceDeclaration$fPrettyDeclarationWarning$fHasRangeDeclarationWarning$fShowDataRecOrFun$fEqDataRecOrFun$fPrettyDeclarationException$fHasRangeDeclarationException$fMakeAbstractWhereClause'$fMakeAbstractClause$fMakeAbstractNiceDeclaration$fMakeAbstractIsAbstract$fMakeAbstract[]$fMakePrivateWhereClause'$fMakePrivateClause$fMakePrivateNiceDeclaration$fMakePrivateAccess$fMakePrivate[]$fDataNiceDeclaration$fShowNiceDeclaration$fDataDeclarationWarning$fShowDeclarationWarning$fDataKindOfBlock$fEqKindOfBlock$fOrdKindOfBlock$fShowKindOfBlock $fEqInMutual$fShowInMutual$fDataDataRecOrFun$fDataDeclarationException$fShowDeclarationException $fFunctorNice$fApplicativeNice $fMonadNice$fMonadStateNice$fMonadErrorNice $fEqDeclKind$fShowDeclKindPMunPMrunPMIO readFilePMacceptableFileExts parseFile $fFunctorPM$fApplicativePM $fMonadPM$fMonadErrorPM $fMonadIOPMVarSetsubtractfreeVarsIgnorefreeInIgnoringSortAnnSizeVar SizeConst LegendMatrixmatrixrowdescrcoldescrGM flexScopenodeMapintMapnextNode ConstraintsNewFlexArcNodeIdRConstRVarFiniteInfiniteAdjListwarshall warshallGincinfiniteisBelowemptyConstraints initGraphaddFlexaddNode addConstraint buildGraphmkMatrixextendSolution sizeRigidsolve$fSemiRingWeight$fShowConstraint$fShowLegendMatrix$fShowSizeExpr WithDefaultDefaultValue setDefaultcollapseDefault$fEqWithDefault$fShowWithDefault ComposeZipper ComposeZip ListZipperListZipZipperCarrierElement firstHoleplugHolenextHole$fZipperListZipper$fZipperComposeZipper$fEqListZipper$fOrdListZipper$fShowListZipper$fFunctorListZipper$fFoldableListZipper$fTraversableListZipperversionversionWithCommitInfo commitInfoLibM LibWarningLibPositionInfo libFilePos lineNumPosfilePos VersionViewvvBase vvNumberslibraryWarningNamegetDefaultLibrariesgetInstalledLibrarieslibraryIncludePathsfindLib' versionView unVersionView$fPrettyLibWarning'$fPrettyLibWarning$fShowLibrariesFile$fEqVersionView$fShowVersionView$fShowLibPositionInfo$fDataLibPositionInfo$fShowLibWarning$fDataLibWarning$fShowLibError'copyDirContentFlagOptM PragmaOptionsoptShowImplicitoptShowIrrelevant optUseUnicode optVerboseoptPropoptAllowUnsolvedoptDisablePositivityoptTerminationCheckoptTerminationDepthoptCompletenessCheckoptUniverseCheckoptOmegaInOmega optSizedTypesoptGuardednessoptInjectiveTypeConstructorsoptUniversePolymorphismoptIrrelevantProjectionsoptExperimentalIrrelevance optWithoutK optCopatternsoptPatternMatching optExactSplitoptEta optRewriting optCubicaloptPostfixProjectionsoptInstanceSearchDepthoptOverlappingInstancesoptInversionMaxDepthoptSafeoptDoubleCheckoptSyntacticEqualityoptWarningModeoptCompileNoMain optCachingoptCountClusters optAutoInlineoptPrintPatternSynonyms optFastReduceCommandLineOptionsOptionsoptProgramName optInputFileoptIncludePathsoptAbsoluteIncludePaths optLibrariesoptOverrideLibrariesFileoptDefaultLibs optUseLibsoptShowVersion optShowHelpoptInteractiveoptGHCiInteractionoptJSONInteractionoptOptimSmashing optCompileDiroptGenerateVimFileoptGenerateLaTeXoptGenerateHTMLoptHTMLHighlightoptDependencyGraph optLaTeXDir optHTMLDir optCSSFileoptIgnoreInterfacesoptIgnoreAllInterfaces optForcingoptPragmaOptionsoptOnlyScopeChecking HtmlHighlight HighlightAll HighlightCode HighlightAuto VerbositymapFlagdefaultVerbositydefaultInteractionOptionsdefaultOptionsdefaultPragmaOptions defaultCutOffrunOptM checkOptsunsafePragmaOptionsrestartOptionsinfectiveOptionscoinfectiveOptions inputFlagsafeFlagstandardOptionsdeadStandardOptionsstandardOptions_ getOptSimpleparsePragmaOptionsparsePluginOptionsusagestripRTS defaultLibDir$fShowHtmlHighlight$fEqHtmlHighlight$fShowPragmaOptions$fEqPragmaOptions$fShowCommandLineOptions$fEqRestartCodomainIMMonadTCMliftTCM MonadTCStategetTCputTCmodifyTC MonadTCEnvaskTClocalTC MonadReduce liftReduceReduceM unReduceM ReduceEnvredEnvredSt HasOptions pragmaOptionscommandLineOptionsTCErr TypeError Exception IOException PatternErr tcErrState tcErrClosErr LHSOrPatSynIsLHSIsPatSyn InternalErrorNotImplemented NotSupportedCompilationErrorPropMustBeSingletonDataMustEndInSort#ShouldEndInApplicationOfTheDatatype&ShouldBeAppliedToTheDatatypeParametersShouldBeApplicationOf!ConstructorPatternInWrongDatatype6CantResolveOverloadedConstructorsTargetingSameDatatypeDoesNotConstructAnElementOfWrongHidingInLHSWrongHidingInLambdaWrongHidingInApplicationWrongNamedArgumentWrongIrrelevanceInLambdaWrongQuantityInLambdaHidingMismatchRelevanceMismatchUninstantiatedDotPattern ForcedConstructorNotInstantiatedIlltypedPatternIllformedProjectionPatternCannotEliminateWithPattern!WrongNumberOfConstructorArguments ShouldBeEmpty ShouldBeASort ShouldBePi ShouldBePathShouldBeRecordTypeShouldBeRecordPatternNotAProjectionPatternNotAProperTermInvalidTypeSort InvalidTypeFunctionTypeInSizeUnivSplitOnIrrelevantSplitOnNonVariableDefinitionIsIrrelevantVariableIsIrrelevantVariableIsErased UnequalTerms UnequalTypesUnequalRelevance UnequalHiding UnequalSorts UnequalBecauseOfUniverseConflict NotLeqSortMetaCannotDependOnMetaOccursInItselfMetaIrrelevantSolution GenericErrorGenericDocErrorBuiltinMustBeConstructorNoSuchBuiltinNameDuplicateBuiltinBindingNoBindingForBuiltinNoSuchPrimitiveFunctionDuplicatePrimitiveBindingShadowedModuleBuiltinInParameterisedModuleIllegalLetInTelescopeNoRHSRequiresAbsurdPattern TooFewFields TooManyFieldsDuplicateFieldsDuplicateConstructorsWithOnFreeVariableUnexpectedWithPatternsWithClausePatternMismatchFieldOutsideRecordModuleArityMismatchGeneralizeCyclicDependencyGeneralizeUnsolvedMeta SplitErrorImpossibleConstructorTooManyPolaritiesLocalVsImportedModuleClashSolvedButOpenHolesCyclicModuleDependency FileNotFoundOverlappingProjectsAmbiguousTopLevelModuleNameModuleNameUnexpectedModuleNameDoesntMatchFileNameClashingFileNamesForModuleDefinedInOtherFileBothWithAndRHSAbstractConstructorNotInScope NoSuchModule AmbiguousNameAmbiguousModuleClashingDefinitionClashingModuleClashingImportClashingModuleImportPatternShadowsConstructorDuplicateImportsInvalidPatternRepeatedVariablesInPatternGeneralizeNotSupportedHereMultipleFixityDeclsMultiplePolarityPragmasNotAModuleExprNotAnExpressionNotAValidLetBindingNotValidBeforeFieldNothingAppliedToHiddenArgNothingAppliedToInstanceArgBadArgumentsToPatternSynonymTooFewArgumentsToPatternSynonym$CannotResolveAmbiguousPatternSynonymUnusedVariableInPatternSynonymNoParseForApplicationAmbiguousParseForApplication NoParseForLHSAmbiguousParseForLHSOperatorInformationInstanceNoCandidate UnquoteFailedDeBruijnIndexOutOfScopeNeedOptionCopatternsNeedOptionRewritingNeedOptionPropNonFatalErrorsInstanceSearchDepthExhaustedTriedToCopyConstrainedPrim UnquoteError BadVisibilityConInsteadOfDefDefInsteadOfCon NonCanonical BlockedOnMeta UnquotePanicUnificationFailureUnifyIndicesNotVarsUnifyRecursiveEqUnifyReflexiveEqNegativeUnification UnifyConflict UnifyCycle NotADatatypeIrrelevantDatatypeErasedDatatypeCoinductiveDatatypeUnificationStuckCosplitCatchallCosplitNoTargetCosplitNoRecordTypeCannotCreateMissingClauseGenericSplitErrorcantSplitConName cantSplitTelcantSplitConIdxcantSplitGivenIdxcantSplitFailuresTerminationErrortermErrFunctions termErrCallsCallInfocallInfoTarget callInfoRange callInfoCall TCWarningtcWarningRange tcWarningtcWarningPrintedWarningtcWarningCachedWarning NicifierIssueTerminationIssueUnreachableClauses CoverageIssueCoverageNoExactSplitNotStrictlyPositiveUnsolvedMetaVariablesUnsolvedInteractionMetasUnsolvedConstraintsCantGeneralizeOverSortsAbsurdPatternRequiresNoRHS OldBuiltinEmptyRewritePragmaIllformedAsClause UselessPublic UselessInlineWrongInstanceDeclarationInstanceWithExplicitArgInstanceNoOutputTypeNameInstanceArgWithExplicitArgInversionDepthReachedGenericWarningGenericNonFatalErrorSafeFlagPostulateSafeFlagPragmaSafeFlagNonTerminatingSafeFlagTerminating%SafeFlagWithoutKFlagPrimEraseEqualityWithoutKFlagPrimEraseEqualitySafeFlagNoPositivityCheckSafeFlagPolaritySafeFlagNoUniverseCheckLibraryWarningDeprecationWarning UserWarningModuleDoesntExportInfectiveImportCoInfectiveImport Candidate candidateTerm candidateTypecandidateOverlappable ExpandHidden ExpandLastDontExpandLast AbstractMode ConcreteModeIgnoreAbstractMode LetBindings ContextEntryContext UnquoteFlags_unquoteNormalise envContextenvLetBindingsenvCurrentModuleenvCurrentPathenvAnonymousModules envImportPathenvMutualBlockenvTerminationCheckenvSolvingConstraintsenvCheckingWhereenvWorkingOnTypesenvAssignMetasenvActiveProblemsenvAbstractMode envModalityenvDisplayFormsEnabledenvRangeenvHighlightingRange envClauseenvCallenvHighlightingLevelenvHighlightingMethodenvModuleNestingLevel envExpandLast envAppDefenvSimplificationenvAllowedReductionsenvInjectivityDepthenvCompareBlockedenvPrintDomainFreePienvPrintMetasBareenvInsideDotPatternenvUnquoteFlagsenvInstanceDepthenvIsDebugPrintingenvPrintingPatternLambdas envCallByNeedenvCurrentCheckpointenvCheckpointsenvGeneralizeMetasenvGeneralizedVarsenvCheckOptionConsistencyDirectIndirectHighlightingLevelNoneNonInteractive InteractiveBuiltinPrim BuiltinThings BuiltinInfo builtinName builtinDescBuiltinDescriptor BuiltinDataBuiltinDataCons BuiltinPrimBuiltinPostulateBuiltinUnknownTempInstanceTable InstanceTable CheckClause CheckPatternCheckLetBinding InferExpr CheckExprCallCheckDotPatternCheckPatternShadowingCheckProjection IsTypeCallIsType_InferVarInferDefCheckArgumentsCheckTargetType CheckDataDef CheckRecDefCheckConstructorCheckConstructorFitsInCheckFunDefCall CheckPragmaCheckPrimitive CheckIsEmptyCheckWithFunctionTypeCheckSectionApplicationCheckNamedWhereScopeCheckExprScopeCheckDeclaration ScopeCheckLHSNoHighlightingModuleContents StatisticsMutualIdMutIdTermHeadSortHeadPiHeadConsHeadVarHead UnknownHeadFunctionInverse' NotInjectiveInverse InversionMapFunctionInversePrimFun primFunName primFunArityprimFunImplementationAllowedReductionsAllowedReductionProjectionReductionsInlineReductionsCopatternReductionsFunctionReductionsRecursiveReductionsLevelReductionsUnconfirmedReductionsNonTerminatingReductionsMaybeReducedElimsMaybeReducedArgs MaybeReducedMaybeRed isReduced ignoreReduced IsReduced NotReducedReduced NoReduction YesReductionSimplificationYesSimplificationNoSimplificationFieldsDefn DataOrRecSigGeneralizableVar AbstractDefn datarecPars funClauses funCompiled funSplitTree funTreeless funCoveringfunInv funMutualfunAbstr funDelayed funProjectionfunFlags funTerminates funExtLamfunWithfunCopatternLHSdataParsdataIxs dataInduction dataClausedataConsdataSort dataMutual dataAbstr dataPathConsrecPars recClause recConHead recNamedCon recFieldsrecTel recMutualrecEtaEquality' recInductionrecAbstrrecCompconParsconArity conSrcConconDataconAbstrconIndconComp conForced conErased primAbstrprimName primClausesprimInv primCompiledCompKit nameOfHComp nameOfTransp FunctionFlag FunStatic FunInlineFunMacro EtaEquality SpecifiedInferredtheEtaEqualityProjLams getProjLams Projection projProperprojOrig projFromType projIndexprojLams ExtLamInfo extLamModule extLamSysSystem systemTel systemClausesFaceCompiledRepresentation BackendNameCompilerPragmaIsForcedForced NotForced Covariant Contravariant Invariant NonvariantNumGeneralizableArgsNoGeneralizableArgsSomeGeneralizableArgs defArgInfodefNamedefType defPolaritydefArgOccurrencesdefArgGeneralizabledefGeneralizedParams defDisplay defMutualdefCompiledRepdefCopy defMatchabledefNoCompilation defInjectivetheDef RewriteRulerewName rewContextrewHeadrewPatsrewRHSrewType RewriteRulesNLPType nlpTypeLevel nlpTypeUnElPElimsNLPatPWildPDefPLamPPi PBoundVarPTerm DisplayTermDWithAppDConDDefDDotDTermLocalDisplayForm DisplayFormDisplay dfFreeVarsdfPatsdfRHS _secTelescope DisplayFormsRewriteRuleMap DefinitionsSections SignatureSig _sigSections_sigDefinitions_sigRewriteRulesIPClause IPNoClauseipcQName ipcClauseNo ipcClauseInteractionPointsInteractionPointipRangeipMetaipSolvedipClause MetaStore NamedMeta nmSuggestionnmidMetaNameSuggestion miClosRangemiMetaOccursCheckmiNameSuggestionmiGeneralizableRunMetaOccursCheckDontRunMetaOccursCheck MetaPriorityTypeCheckingProblem CheckExpr CheckArgsCheckProjAppToKnownPrincipalArg CheckLambda DoQuoteTerm CheckedTargetNotCheckedTargetMetaInstantiationInstV OpenInstance BlockedConstPostponedTypeCheckingProblemFrozen InstantiableListener EtaExpandCheckConstraint MetaVariableMetaVarmvInfo mvPriority mvPermutation mvJudgementmvInstantiation mvListenersmvFrozenGeneralizedValuegenvalCheckpoint genvalTerm genvalType DoGeneralize YesGeneralize NoGeneralize JudgementHasTypeIsSortjMetaId jMetaType OpenThingopenThingCheckpoint openThingCompareDirectionDirEqDirLeqDirGeq ComparisonCmpEqCmpLeqValueCmpValueCmpOnFaceElimCmpTypeCmpTelCmpSortCmpLevelCmp HasBiggerSort HasPTSRuleUnBlockGuardedIsEmptyCheckSizeLtSat FindInstance CheckFunDef UnquoteTacticProblemConstraintPConstrconstraintProblems theConstraintClosure clSignatureclEnvclScopeclModuleCheckpointsclValue Interface iSourceHashiSource iFileTypeiImportedModules iModuleNameiScope iInsideScope iSignature iDisplayForms iUserWarningsiBuiltin iForeignCode iHighlightingiPragmaOptions iOptionsUsed iPatternSyns iWarnings ForeignCodeDecodedModulesVisitedModules miInterface miWarnings miPrimitiveSourceToModule FreshName freshName_ CheckpointId ProblemIdHasFresh freshLens nextFresh'TypeCheckAction EnterSection LeaveSectionPragmasCurrentTypeCheckLogCachedTypeCheckLogLoadedFileCache lfcCached lfcCurrentPersistentTCStatePersistentTCStstDecodedModulesstPersistentOptionsstInteractionOutputCallback stBenchmarkstAccumStatisticsstLoadedFileCachestPersistBackends MutualBlock mutualInfo mutualNamesPostScopeStatestPostSyntaxInfostPostDisambiguatedNamesstPostMetaStorestPostInteractionPointsstPostAwakeConstraintsstPostSleepingConstraints stPostDirtystPostOccursCheckDefsstPostSignaturestPostModuleCheckpointsstPostImportsDisplayFormsstPostCurrentModulestPostInstanceDefsstPostConcreteNamesstPostShadowingNamesstPostStatisticsstPostTCWarningsstPostMutualBlocksstPostLocalBuiltinsstPostFreshMetaIdstPostFreshMutualIdstPostFreshProblemIdstPostFreshCheckpointIdstPostFreshIntstPostFreshNameIdstPostAreWeCachingstPostConsideringInstanceDisambiguatedNames PreScopeState stPreTokens stPreImportsstPreImportedModulesstPreModuleToSourcestPreVisitedModules stPreScopestPrePatternSynsstPrePatternSynImportsstPreGeneralizedVarsstPrePragmaOptionsstPreImportedBuiltinsstPreImportedDisplayFormsstPreImportedInstanceDefsstPreForeignCodestPreFreshInteractionIdstPreImportedUserWarningsstPreLocalUserWarnings ReadTCState getTCState withTCStateTCStstPreScopeStatestPostScopeStatestPersistentStateinitPersistentStateinitPreScopeStateinitPostScopeStatestTokens stImportsstImportedModulesstModuleToSourcestVisitedModulesstScope stPatternSynsstPatternSynImportsstGeneralizedVarsstPragmaOptionsstImportedBuiltins stForeignCodestFreshInteractionIdstImportedUserWarningsstLocalUserWarningsgetUserWarnings stBackends stFreshNameId stSyntaxInfostDisambiguatedNames stMetaStorestInteractionPointsstAwakeConstraintsstSleepingConstraintsstDirtystOccursCheckDefs stSignaturestModuleCheckpointsstImportsDisplayFormsstImportedDisplayFormsstCurrentModulestImportedInstanceDefsstInstanceDefsstConcreteNamesstShadowingNames stStatistics stTCWarningsstMutualBlocksstLocalBuiltins stFreshMetaIdstFreshMutualIdstFreshProblemIdstFreshCheckpointId stFreshIntstAreWeCachingstConsideringInstancestBuiltinThings nextFreshfresh freshName freshNoName freshNoName_freshRecordNamesourceToModulelookupModuleFromSource iFullHash buildClosurefromCmpflipCmpdirToCmpnormalMetaPrioritylowMetaPriorityhighMetaPriority getMetaInfo getMetaScope getMetaEnv getMetaSiggetMetaRelevancegetMetaModality metaFrozen sigSectionssigDefinitionssigRewriteRules secTelescopeemptySignaturedefaultDisplayForm defRelevance theDefLens defaultDefn jsBackendNameghcBackendName noCompiledRep modifySystem projDropPars projArgInfosetEtaEquality emptyCompKit recRecursiverecEtaEquality emptyFunctionfunFlag funStatic funInlinefunMacroisMacroisEmptyFunctionisCopatternLHSrecCon defIsRecorddefIsDataOrRecorddefConstructors notReducedreduced allReductionsprimFun defClauses defCompiled defParameters defInversedefCompilerPragmas defDelayeddefNonterminatingdefTerminationUnconfirmed defForced"ifTopLevelAndHighlightingLevelIsOr ifTopLevelAndHighlightingLevelIsinitEnv envRelevancedefaultUnquoteFlagsunquoteNormaliseeUnquoteNormaliseeContext eLetBindingseCurrentModule eCurrentPatheAnonymousModules eImportPath eMutualBlockeTerminationCheckeSolvingConstraintseCheckingWhereeWorkingOnTypes eAssignMetaseActiveProblems eAbstractMode eModality eRelevance eQuantityeDisplayFormsEnabledeRangeeHighlightingRangeeCalleHighlightingLeveleHighlightingMethodeModuleNestingLevel eExpandLasteAppDefeSimplificationeAllowedReductionseInjectivityDeptheCompareBlockedePrintDomainFreePieInsideDotPattern eUnquoteFlagseInstanceDeptheIsDebugPrintingePrintingPatternLambdas eCallByNeedeCurrentCheckpoint eCheckpointseGeneralizeMetaseGeneralizedVars aDefToMode aModeToDef warningNametcWarningOriginequalHeadConstructorsgetPartialDefssizedTypesOptionguardednessOptionwithoutKOption mapRedEnvmapRedSt mapRedEnvSt reduceEnvreduceSt onReduceEnv fmapReduceapReduce bindReduce runReduceM runReduceFuseRaskRlocalRasksTCviewTC locallyTCgetsTC modifyTC'useTC setTCLens modifyTCLens modifyTCLensMlocallyTCStaterunIM catchError_finally_mapTCMTpureTCM returnTCMTbindTCMTthenTCMTfmapTCMTapTCMTpatternViolation internalError genericErrorgenericDocError typeError typeError_runTCM runTCMTop runTCMTop' runSafeTCMforkTCMextendedLambdaNameisExtendedLambdaNameabsurdLambdaNameisAbsurdLambdaNamegeneralizedFieldNamegetGeneralizedFieldName$fNullMutualBlock$fPrettyProblemId$fShowProblemId$fPrettyCheckpointId$fShowCheckpointId$fPrettyComparison$fPrettyCompareDirection$fKillRangeOpen$fDecorationOpen$fShowJudgement$fKillRangeDoGeneralize$fPrettyNamedMeta $fEqIPClause$fEqInteractionPoint$fKillRangeSection$fPrettySection$fKillRangeDisplayTerm$fPrettyDisplayTerm$fFreeDisplayTerm$fKillRangeDisplayForm$fFreeDisplayForm$fKillRangeNLPType$fKillRangeNLPat$fKillRangeRewriteRule$fKillRangeHashMap$fKillRangeNumGeneralizableArgs$fKillRangePolarity$fKillRangeIsForced$fHasRangeCompilerPragma$fKillRangeMap0$fKillRangeSystem$fKillRangeExtLamInfo$fKillRangeProjLams$fKillRangeProjection$fKillRangeEtaEquality$fKillRangeFunctionFlag$fKillRangeCompKit$fMonoidSimplification$fSemigroupSimplification$fNullSimplification$fIsProjElimMaybeReduced$fKillRangeTermHead$fPrettyTermHead$fKillRangeFunctionInverse'$fKillRangeMutualId$fHasRangeCall $fPrettyCall$fKillRangeClosure$fKillRangeDefn$fKillRangeDefinition$fKillRangeHashMap0$fKillRangeSignature $fPrettyDefn$fPrettyDefinition$fHasRangeClosure $fShowClosure$fSetRangeMetaInfo$fFreeCandidate$fTermLikeConstraint$fFreeConstraint$fHasRangeConstraint$fHasRangeProblemConstraint $fOrdListener $fEqListener$fAllNamesCallInfo$fPrettyCallInfo $fEqTCWarning$fHasRangeTCWarning$fPrettyInterface$fHasOptionsWriterT$fHasOptionsStateT$fHasOptionsReaderT$fHasOptionsMaybeT$fHasOptionsListT$fHasOptionsExceptT$fMonadTCEnvStateT$fMonadTCEnvWriterT$fMonadTCEnvReaderT$fMonadTCEnvExceptT$fMonadTCEnvListT$fMonadTCEnvMaybeT $fMonoidTCMT$fSemigroupTCMT $fNullTCMT$fMonadBenchPhaseTCMT$fApplicativeTCMT $fFunctorTCMT$fMonadFailTCMT $fMonadTCMT$fMonadTransTCMT$fIsStringTCMT$fMonadTCEnvTCMT$fMonadTCEnvReduceM$fMonadFailReduceM$fMonadReduceM$fApplicativeReduceM$fFunctorReduceM$fSetRangeMetaVariable$fHasRangeMetaVariable$fShowMetaInstantiation $fShowTCState$fMonadTCStateTCMT$fMonadTCStateStateT$fMonadTCStateWriterT$fMonadTCStateReaderT$fMonadTCStateExceptT$fMonadTCStateListT$fMonadTCStateMaybeT$fHasOptionsTCMT $fFreshName()$fFreshNameRange' $fFreshName[]$fFreshName(,) $fMonadIOTCMT$fMonadErrorTCErrTCMT$fExceptionTCErr$fHasRangeTCErr $fShowTCErr $fErrorTCErr$fHasFreshCheckpointId$fHasFreshProblemId $fHasFreshInt$fHasFreshNameId$fHasFreshInteractionId$fHasFreshMutualId$fHasFreshMetaId$fReadTCStateTCMT$fHasOptionsReduceM$fReadTCStateReduceM$fReadTCStateStateT$fReadTCStateWriterT$fReadTCStateReaderT$fReadTCStateExceptT$fReadTCStateListT$fReadTCStateMaybeT$fMonadReduceReduceM$fMonadReduceStateT$fMonadReduceWriterT$fMonadReduceReaderT$fMonadReduceExceptT$fMonadReduceListT$fMonadReduceMaybeT$fMonadTCMReaderT$fMonadTCMStateT$fMonadTCMWriterT$fMonadTCMExceptT$fMonadTCMListT$fMonadTCMMaybeT$fMonadTCMTCMT$fMonadReduceTCMT$fMonadErrorTCErrTCMT0$fShowMutualBlock$fEqMutualBlock$fDataProblemId $fEqProblemId$fOrdProblemId$fEnumProblemId$fRealProblemId$fIntegralProblemId$fNumProblemId$fDataCheckpointId$fEqCheckpointId$fOrdCheckpointId$fEnumCheckpointId$fRealCheckpointId$fIntegralCheckpointId$fNumCheckpointId$fShowForeignCode$fEqComparison$fDataComparison$fShowComparison$fEqCompareDirection$fShowCompareDirection $fDataOpen $fShowOpen $fFunctorOpen$fFoldableOpen$fTraversableOpen$fEqDoGeneralize$fOrdDoGeneralize$fShowDoGeneralize$fDataDoGeneralize$fShowGeneralizedValue$fDataGeneralizedValue $fEqFrozen $fShowFrozen$fEqMetaPriority$fOrdMetaPriority$fShowMetaPriority$fEqRunMetaOccursCheck$fOrdRunMetaOccursCheck$fShowRunMetaOccursCheck$fDataIPClause $fDataSection $fShowSection$fDataDisplayTerm$fShowDisplayTerm$fDataDisplayForm$fShowDisplayForm $fDataNLPType $fShowNLPType $fDataNLPat $fShowNLPat$fDataRewriteRule$fShowRewriteRule$fDataNumGeneralizableArgs$fShowNumGeneralizableArgs$fDataPolarity$fShowPolarity$fDataIsForced$fShowIsForced $fEqIsForced$fDataCompilerPragma$fShowCompilerPragma$fEqCompilerPragma $fDataSystem $fShowSystem$fDataExtLamInfo$fShowExtLamInfo$fDataProjLams$fShowProjLams$fNullProjLams$fDataProjection$fShowProjection$fDataEtaEquality$fShowEtaEquality$fEqEtaEquality$fDataFunctionFlag$fEqFunctionFlag$fOrdFunctionFlag$fEnumFunctionFlag$fShowFunctionFlag $fDataCompKit $fEqCompKit $fOrdCompKit $fShowCompKit $fNullFields$fDataSimplification$fEqSimplification$fShowSimplification$fFunctorReduced$fFunctorMaybeReduced$fShowAllowedReduction$fEqAllowedReduction$fOrdAllowedReduction$fEnumAllowedReduction$fBoundedAllowedReduction$fDataAllowedReduction$fDataTermHead $fEqTermHead $fOrdTermHead$fShowTermHead$fDataFunctionInverse'$fShowFunctionInverse'$fFunctorFunctionInverse'$fDataMutualId $fEqMutualId $fOrdMutualId$fShowMutualId $fNumMutualId$fEnumMutualId $fDataCall $fShowBuiltin$fFunctorBuiltin$fFoldableBuiltin$fTraversableBuiltin$fEqHighlightingLevel$fOrdHighlightingLevel$fShowHighlightingLevel$fReadHighlightingLevel$fDataHighlightingLevel$fEqHighlightingMethod$fShowHighlightingMethod$fReadHighlightingMethod$fDataHighlightingMethod$fDataUnquoteFlags$fDataAbstractMode$fShowAbstractMode$fEqAbstractMode$fEqExpandHidden$fDataExpandHidden $fDataTCEnv $fDataClosure$fFunctorClosure$fFoldableClosure$fDataSignature$fShowSignature$fDataDefinition $fDataDefn $fShowDefn$fShowCandidate$fDataCandidate$fDataConstraint$fDataProblemConstraint$fShowProblemConstraint$fDataCallInfo$fShowCallInfo$fDataTerminationError$fShowTerminationError $fShowWarning $fDataWarning$fShowTCWarning$fShowInterface$fShowNegativeUnification$fShowUnificationFailure$fShowSplitError$fEqLHSOrPatSyn$fShowLHSOrPatSyn$fShowUnquoteError$fShowTypeErrorVALUvaluN' valueArgsICODE icodeArgsEmbPrjicodeicod_valueStnodeEstringEtextEintegerEdoubleEnodeMemomodFileincludesMemoUDictnodeDstringDtextDintegerDdoubleDtermDnameDqnameDnodeCstringCtextCintegerCdoubleCtermCnameCqnameCstats collectStatsabsPathDQNameId FreshAndReusefarFreshfarReuse HashTablefarEmpty lensFresh lensReuseqnameId emptyDict malformed tickICode runGetStateicodeX icodeInteger icodeDouble icodeString icodeNode icodeMemovcaseicodeNicodeN'valuNvalueN$fICODE->False $fICODEtTrue $fVALU->False $fVALUtTrue unquoteTactic doQuoteTermcheckPostponedLambda inferExpr checkExpr' checkExprisType_checkSectionApplication checkDecl checkDeclscheckProjAppToKnownPrincipalArginferApplicationcheckApplicationcheckArguments_checkArgumentsrewriteverifyBuiltinRewrite fastNormalise fastReduce PrettyTCM prettyTCM composePolcomputePolarity VerboseKey enableCachingverboseS hasVerbositygetIncludeDirs addImportaddImportCycleCheck getImports isImported getImportPath visitModulesetVisitedModulesgetVisitedModules isVisitedgetVisitedModulemapVisitedModulegetDecodedModulessetDecodedModulesgetDecodedModulestoreDecodedModuledropDecodedModulewithImportPathcheckForImportCycle currentModulewithCurrentModulegetCurrentPathgetAnonymousVariableswithAnonymousModulewithEnvgetEnvwithIncreasedModuleNestingLevelwithHighlightingLevelwithoutOptionsChecking doExpandLastdontExpandLastperformedSimplificationperformedSimplification'getSimplificationupdateAllowedReductionsmodifyAllowedReductionsputAllowedReductionsonlyReduceProjectionsallowAllReductionsallowNonTerminatingReductionsinsideDotPatternisInsideDotPattern callByName MonadDebugdisplayDebugMessagetraceDebugMessageformatDebugMessage reportSDoc reportSLnreportScheckpointSubstitution Condition newSortMeta newTelMetanewNamedValueMeta'newNamedValueMeta newValueMetanewInstanceMetaassignassignVetaExpandMetaSafe assignTerm newArgsMeta newArgsMeta'sayWhen prettyWarning prettyErrorunlessDebugPrintingtraceSLn traceSDocverboseBracket$fMonadDebugWriterT$fMonadDebugStateT$fMonadDebugReaderT$fMonadDebugMaybeT$fMonadDebugListT$fMonadDebugExceptT$fMonadDebugTCMT HasConstInfo getConstInfo getConstInfo'getRewriteRulesForSigError SigUnknown SigAbstract lookupSectioninFreshModuleIfFreeParamseligibleForProjectionLikemakeProjection cachingStarts areWeCachingwriteToCurrentLogrestorePostScopeState withoutCachereadFromCachedLogcleanCachedLogactivateLoadedFileCachecacheCurrentLog WhichWarnings ErrorWarnings AllWarningsgenericWarninggenericNonFatalErrorwarning_applyWarningModewarningswarningisUnsolvedWarningclassifyWarningonlyOnceonlyShowIfUnsolvedclassifyWarningsrunPM$fEqWhichWarnings$fOrdWhichWarningsSpeculateResultSpeculateAbortSpeculateCommit resetState resetAllState localTCStatelocalTCStateSavingspeculateTCStatespeculateTCState_freshTCMlensPersistentStateupdatePersistentStatemodifyPersistentStatelensAccumStatisticsPlensAccumStatisticsgetScopesetScope modifyScope_ modifyScope withScope withScope_ localScope notInScope printScopemodifySignaturemodifyImportedSignature getSignaturemodifyGlobalDefinition setSignature withSignatureaddRewriteRulesForlookupDefinitionupdateDefinitionsupdateDefinition updateTheDef updateDefTypeupdateDefArgOccurrencesupdateDefPolarityupdateDefCompiledRepaddCompilerPragmaupdateFunClausesupdateCoveringupdateCompiledClausesupdateFunCopatternLHSsetTopLevelModulewithTopLevelModuleaddForeignCodegetInteractionOutputCallbackappInteractionOutputCallbacksetInteractionOutputCallbackgetPatternSynssetPatternSynsmodifyPatternSynsgetPatternSynImportsgetAllPatternSynslookupPatternSynlookupSinglePatternSyn theBenchmarkupdateBenchmarkaddImportedInstancesupdateInstanceDefsmodifyInstanceDefsgetAllInstanceDefsgetAnonInstanceDefsclearAnonInstanceDefsaddUnknownInstanceaddNamedInstance noMutualBlock inMutualBlocksetMutualBlockInfoinsertMutualBlockInfosetMutualBlockcurrentOrFreshMutualBlocklookupMutualBlock mutualBlockOfupdateBenchmarkingStatusprintdebugConstraintsguardConstraintifNoConstraintsifNoConstraints_ noConstraintssolveSomeAwakeConstraintssolveAwakeConstraints'solveConstraintcatchConstraintmatchCompiledE matchCompiledAction shouldBeSortinfercheckInternal' checkInternal checkSort checkType' checkTypeeraseUnusedAction defaultActionPSynNamesInnamesIn$fNamesInAmbiguousQName$fNamesInPattern'$fNamesInDisplayTerm$fNamesInDisplayForm $fNamesInOpen$fNamesInConHead$fNamesInQName$fNamesInElim'$fNamesInLiteral$fNamesInLevelAtom$fNamesInPlusLevel$fNamesInLevel $fNamesInTerm $fNamesInSort$fNamesInType'$fNamesInPattern'0 $fNamesInCase$fNamesInCompiledClauses'$fNamesInClause $fNamesInDefn$fNamesInDefinition$fNamesInCompKit $fNamesIn(,,) $fNamesIn(,)$fNamesInFieldAssignment' $fNamesInTele$fNamesInWithArity $fNamesInAbs$fNamesInNamed $fNamesInDom $fNamesInArg$fNamesInNonemptyList $fNamesIn[]$fNamesInMaybe $fNamesInPSyn showOpenMetas MainInterfaceNotMainInterfacescopeCheckImporthighlightAsTypeCheckedcheckModuleName moduleName autoInlineLensPersistentVerbositygetPersistentVerbositysetPersistentVerbositymapPersistentVerbosityPersistentVerbosityLensIncludePathsgetIncludePathssetIncludePathsmapIncludePathsgetAbsoluteIncludePathssetAbsoluteIncludePathsmapAbsoluteIncludePaths LensSafeMode getSafeMode setSafeMode mapSafeModeSafeModeLensCommandLineOptionsgetCommandLineOptionssetCommandLineOptionsmapCommandLineOptions LensVerbosity getVerbosity setVerbosity mapVerbosityLensPragmaOptionsgetPragmaOptionssetPragmaOptionsmapPragmaOptionslensPragmaOptionsmodifyPragmaOptionsmodifyVerbosity putVerbositymodifyCommandLineOptionsmodifySafeMode putSafeMode builtinModulesWithSafePostulates"builtinModulesWithUnsafePostulatesprimitiveModulesbuiltinModulesisBuiltinModule!isBuiltinModuleWithSafePostulatesmodifyIncludePathsputIncludePathsmodifyAbsoluteIncludePathsputAbsoluteIncludePathsmodifyPersistentVerbosityputPersistentVerbosity$fLensPragmaOptionsTCState%$fLensPragmaOptionsCommandLineOptions$fLensVerbosityTCState$fLensVerbosityPragmaOptions$fLensCommandLineOptionsTCState)$fLensCommandLineOptionsPersistentTCState$fLensSafeModeTCState$fLensSafeModePersistentTCState $fLensSafeModeCommandLineOptions$fLensSafeModePragmaOptions$fLensIncludePathsTCState#$fLensIncludePathsPersistentTCState$$fLensIncludePathsCommandLineOptions $fLensPersistentVerbosityTCState*$fLensPersistentVerbosityPersistentTCState+$fLensPersistentVerbosityCommandLineOptions&$fLensPersistentVerbosityPragmaOptionssetCommandLineOptions'libToTCMsetLibraryPathssetLibraryIncludesaddDefaultLibrariessetOptionsFromPragmaenableDisplayFormsdisableDisplayFormsdisplayFormsEnabledsetIncludeDirs setInputFile getInputFile getInputFile' hasInputFile isPropEnabledhasUniversePolymorphismshowImplicitArgumentsshowIrrelevantArgumentswithShowAllArgumentswithShowAllArguments'withPragmaOptionsignoreInterfacesignoreAllInterfacespositivityCheckEnabled typeInType etaEnabledmaxInstanceSearchDepthmaxInversionDepthparseVerboseKeyhasExactVerbositywhenExactVerbosity verbosity TeleNoAbs teleNoAbsTelVtheTeltheCoreTelView canProjectconAppdefApp argToDontCare relToDontCarepiApplytelVars namedTelVars abstractArgsrenaming renamingRrenamePapplyNLPatSubstfromPatternSubstitution applyPatSubst usePatOriginprojDropParsApplytelView' telView'UpTo bindsToTel' bindsToTelnamedBindsToTeldomFromNamedArgNamemkPimkLamtelePi'telePitelePi_teleLamtypeArgsWithTelcompiledClauseBody univSort'univSortunivInffunSort'funSortpiSort'piSortlevelMaxlevelTm unLevelAtom levelSucView $fOrdElim' $fEqElim'$fOrdAbs$fEqAbs $fOrdTerm$fEqTerm $fOrdType' $fEqType'$fOrdLevelAtom $fEqLevelAtom$fOrdPlusLevel$fSubstTermRange'$fSubstPattern'Pattern'$fDeBruijnPattern'$fSubstTermEqualityView$fSubstTermCandidate $fSubstt(,,,) $fSubstt(,,) $fSubstt(,) $fSubstTerm() $fSubsttMap $fSubstt[] $fSubsttMaybe $fSubsttDom $fSubsttNamed $fSubsttArg $fSubsttAbs $fSubsttElim'$fSubstTermConstraint $fSubsttTele$fSubstTermDisplayTerm$fSubstTermDisplayForm$fSubsttBlocked$fSubstNLPatRewriteRule$fSubstNLPatNLPType$fSubstNLPatNLPat$fDeBruijnNLPat$fSubstTermProblemEq$fSubstTermPattern'$fSubstTermConPatternInfo $fSubstTerm[]$fSubstTermName$fSubstTermLevelAtom$fSubstTermPlusLevel$fSubstTermLevel$fSubstTermSort$fSubstTermType'$fSubstTermTerm$fSubstaSubstitution'$fAbstractHashMap $fAbstractMap$fAbstractMaybe $fAbstract[]$fAbstractFunctionInverse'$fAbstractCase$fAbstractWithArity$fAbstractCompiledClauses'$fAbstractClause$fAbstractPrimFun$fAbstractDefn$fAbstractSystem$fAbstractProjLams$fAbstractProjection$fAbstractNumGeneralizableArgs $fAbstract[]0 $fAbstract[]1$fAbstractRewriteRule$fAbstractDefinition$fAbstractTele$fAbstractSort$fAbstractType'$fAbstractTerm$fAbstractPermutation$fApplyPermutation$fAbstractDrop $fApplyDrop $fApply(,,) $fApply(,)$fApplyHashMap $fApplyMap $fApplyMaybe$fApplyBlocked $fApply[]$fApplyDisplayTerm$fApplyFunctionInverse' $fApplyCase$fApplyWithArity $fApplySystem$fApplyExtLamInfo$fApplyCompiledClauses' $fApplyClause$fApplyPrimFun $fApplyDefn$fApplyProjLams$fApplyProjection $fApply[]0$fApplyNumGeneralizableArgs $fApply[]1 $fApply[]2$fApplyRewriteRule$fApplyDefinition $fApplyTele $fApplySort $fApplyTerm$fTeleNoAbsTele $fTeleNoAbs[] $fShowTelV $fFunctorTelV $fEqSection$fEqConstraint $fOrdTele$fEqTele $fEqCandidate $fEqBlocked$fEqNotBlocked $fEqPlusLevel $fOrdLevel $fEqLevel $fOrdSort$fEqSort$fOrdSubstitution'$fEqSubstitution' $fOrdTelV$fEqTelVPiApplyMpiApplyMtelViewmakeOpengetOpen tryGetOpenisClosedCoinductionKit nameOfInf nameOfSharp nameOfFlat HasBuiltinsgetBuiltinThinglitTypesetBuiltinThingsbindBuiltinName bindPrimitive getBuiltin getBuiltin' getPrimitive' getPrimitivegetPrimitiveTermgetPrimitiveTerm'getTerm'getName'getTermconstructorFormconstructorForm' primIntegerprimIntegerPosprimIntegerNegSuc primFloatprimChar primStringprimBool primSigmaprimUnit primUnitUnitprimTrue primFalseprimListprimNilprimConsprimIOprimId primConId primIdElimprimPath primPathP primInterval primIZeroprimIOneprimIMinprimIMaxprimINeg primPartial primPartialP primIsOne primItIsOne primTrans primHComp primEquiv primEquivFunprimEquivProofprimPathToEquivprimGlue prim_glue prim_unglueprimFaceForall primIsOne1 primIsOne2primIsOneEmptyprimSub primSubIn primSubOutprimNatprimSucprimZero primNatPlus primNatMinus primNatTimesprimNatDivSucAuxprimNatModSucAuxprimNatEquality primNatLess primWord64 primSizeUnivprimSize primSizeLt primSizeSuc primSizeInf primSizeMaxprimInf primSharpprimFlat primEqualityprimRefl primRewrite primLevel primLevelZero primLevelSuc primLevelMax primSetOmega primFromNat primFromNegprimFromString primQNameprimArg primArgArgprimAbs primAbsAbs primAgdaSort primHiding primHidden primInstance primVisible primRelevance primRelevantprimIrrelevant primAssoc primAssocLeftprimAssocRight primAssocNonprimPrecedenceprimPrecRelatedprimPrecUnrelated primFixityprimFixityFixity primArgInfoprimArgArgInfoprimAgdaSortSetprimAgdaSortLitprimAgdaSortUnsupported primAgdaTermprimAgdaTermVarprimAgdaTermLamprimAgdaTermExtLamprimAgdaTermDefprimAgdaTermConprimAgdaTermPiprimAgdaTermSortprimAgdaTermLitprimAgdaTermUnsupportedprimAgdaTermMetaprimAgdaErrorPartprimAgdaErrorPartStringprimAgdaErrorPartTermprimAgdaErrorPartNameprimAgdaLiteralprimAgdaLitNatprimAgdaLitWord64primAgdaLitFloatprimAgdaLitCharprimAgdaLitStringprimAgdaLitQNameprimAgdaLitMetaprimAgdaPatternprimAgdaPatConprimAgdaPatVarprimAgdaPatDotprimAgdaPatLitprimAgdaPatProjprimAgdaPatAbsurdprimAgdaClauseprimAgdaClauseClauseprimAgdaClauseAbsurdprimAgdaDefinitionFunDefprimAgdaDefinitionDataDefprimAgdaDefinitionRecordDef!primAgdaDefinitionDataConstructorprimAgdaDefinitionPostulateprimAgdaDefinitionPrimitiveprimAgdaDefinition primAgdaMeta primAgdaTCMprimAgdaTCMReturnprimAgdaTCMBindprimAgdaTCMUnifyprimAgdaTCMTypeErrorprimAgdaTCMInferTypeprimAgdaTCMCheckTypeprimAgdaTCMNormaliseprimAgdaTCMReduceprimAgdaTCMCatchErrorprimAgdaTCMGetContextprimAgdaTCMExtendContextprimAgdaTCMInContextprimAgdaTCMFreshNameprimAgdaTCMDeclareDefprimAgdaTCMDeclarePostulateprimAgdaTCMDefineFunprimAgdaTCMGetTypeprimAgdaTCMGetDefinitionprimAgdaTCMQuoteTermprimAgdaTCMUnquoteTermprimAgdaTCMBlockOnMetaprimAgdaTCMCommitprimAgdaTCMIsMacroprimAgdaTCMWithNormalisationprimAgdaTCMDebugPrintprimAgdaTCMNoConstraintsprimAgdaTCMRunSpeculativecoinductionKit'coinductionKit getPrimNamegetBuiltinName'getPrimitiveName' isPrimitive intervalView' intervalViewintervalUnviewintervalUnview'pathView pathView' idViewAsPath boldPathView pathUnviewprimEqualityName equalityViewequalityUnviewconstrainedPrimsgetNameOfConstrained$fHasBuiltinsTCMT$fHasBuiltinsStateT$fHasBuiltinsExceptT$fHasBuiltinsMaybeT $fShowLeq$fEqLeqDropArgsdropArgs$fDropArgsSplitTree'$fDropArgsCompiledClauses'$fDropArgsTerm$fDropArgsFunctionInverse'$fDropArgsClause$fDropArgsPermutation$fDropArgsTele$fDropArgsMaybeInSeqHasFreeOccursSeqArg UnderLambdaonceinSeq underLambdaoccursIn tryStrengthen$fSubstTTermTAlt$fSubstTTermTTerm$fDeBruijnTTerm$fMonoidOccurs$fSemigroupOccurs $fHasFree(,) $fHasFree[] $fHasFreeInt $fHasFreeTAlt$fHasFreeBinder$fHasFreeTTerm$fHasFreeInSeq$fEqUnderLambda$fOrdUnderLambda$fShowUnderLambda$fSemigroupUnderLambda$fMonoidUnderLambda $fEqSeqArg $fOrdSeqArg $fShowSeqArg$fSemigroupSeqArg$fMonoidSeqArg $fEqOccurs $fOrdOccurs $fShowOccurs $fPrettyTTerm convertGuards equalTerms caseToSeqrecoverAsPatterns $fShowAsPatinterestingCall traceCallM traceCallgetCurrentRangesetCurrentRange FindErrorNotFound AmbiguoustoIFilereplaceModuleExtensionfindErrorToTypeErrorfindFile findFile' findFile''findInterfaceFilerootNameModuleSerialisedRangeunderlyingRange $fEmbPrjEmpty$fEmbPrjImpossible$fEmbPrjDelayed$fEmbPrjIsAbstract$fEmbPrjLiteral$fEmbPrjProjOrigin$fEmbPrjConOrigin$fEmbPrjFreeVariables$fEmbPrjOrigin$fEmbPrjRelevance$fEmbPrjModality$fEmbPrjQuantity$fEmbPrjHiding$fEmbPrjInduction$fEmbPrjHasEta $fEmbPrjDom $fEmbPrjArg$fEmbPrjWithHiding$fEmbPrjHashMap$fEmbPrjNameId$fEmbPrjArgInfo$fEmbPrjRanged $fEmbPrjNamed$fEmbPrjFieldAssignment'$fEmbPrjModuleName$fEmbPrjAmbiguousQName $fEmbPrjQName$fEmbPrjMetaId$fEmbPrjGenPart$fEmbPrjFixity'$fEmbPrjFixity$fEmbPrjPrecedenceLevel$fEmbPrjAssociativity$fEmbPrjImportedName'$fEmbPrjQName0$fEmbPrjNameInScope$fEmbPrjNamePart $fEmbPrjName$fEmbPrjRange'$fEmbPrjInterval' $fEmbPrjSeq $fEmbPrjTrie$fEmbPrjIntSet $fEmbPrjSet $fEmbPrjMap $fEmbPrjBiMap$fEmbPrjNonemptyList $fEmbPrj[]$fEmbPrjTopLevelModuleName$fEmbPrjWithDefault$fEmbPrjPosition'$fEmbPrjAbsolutePath$fEmbPrjDataOrRecord$fEmbPrjFileType $fEmbPrjBool $fEmbPrjMaybe$fEmbPrjMaybe0$fEmbPrjEither $fEmbPrj(,,) $fEmbPrj(,) $fEmbPrj() $fEmbPrjVoid$fEmbPrjDouble $fEmbPrjChar $fEmbPrjInt $fEmbPrjInt32$fEmbPrjWord64$fEmbPrjInteger $fEmbPrjText $fEmbPrj[]0 $fEmbPrjName0$fEmbPrjSerialisedRange$fEmbPrjTokenBased$fEmbPrjCompressedFile$fEmbPrjDefinitionSite$fEmbPrjAspects$fEmbPrjOtherAspect$fEmbPrjAspect$fEmbPrjNameKind $fEmbPrjRange getStatisticsmodifyStatisticsticktickNtickMaxprintStatistics SizeMaxView' SizeMaxViewSizeViewComparable NotComparableYesAboveYesBelow DeepSizeViewDSizeInfDSizeVar DSizeMeta DOtherSizeSizeViewSizeInfSizeSuc OtherSize IsSizeType isSizeType BoundedSize BoundedLt BoundedNoisSizeTypeTestgetBuiltinDefNamegetBuiltinSizeisSizeNameTestisSizeNameTestRawhaveSizedTypes haveSizeLtbuiltinSizeHooksizeSortsizeUniv sizeType_sizeType sizeSucNamesizeSucsizeSuc_sizeMaxsizeViewsizeViewComparable sizeViewSuc_ sizeViewPredsizeViewOffset removeSucs unSizeViewunDeepSizeView maxViewMax maxViewConssizeViewComparableWithMax maxViewSuc_ unMaxView$fIsSizeTypeTerm$fIsSizeTypeType'$fIsSizeType(,)$fIsSizeTypeDom$fPrettyDeepSizeView$fEqBoundedSize$fShowBoundedSize$fShowDeepSizeView$fFunctorSizeViewComparableOpenKind LetOpenModule TopOpenModule ScopeMemo memoNames memoModulesWSMScopeMisDatatypeModule printLocalsgetCurrentModulesetCurrentModulewithCurrentModule' getNamedScopegetCurrentScope createModule modifyScopesmodifyNamedScope setNamedScopemodifyNamedScopeMmodifyCurrentScopemodifyCurrentScopeMmodifyCurrentNameSpacepushContextPrecedencesetContextPrecedencewithContextPrecedence getLocalVarsmodifyLocalVars setLocalVars withLocalVars getVarsToBind addVarToBindbindVarsToBindfreshAbstractNamefreshAbstractName_freshAbstractQNamefreshAbstractQName' resolveName resolveName' resolveModulegetConcreteFixitygetConcretePolaritycomputeFixitiesAndPolarities getNotation bindVariableunbindVariablebindName bindName' rebindName bindModule bindQModule stripNoNamesmemoToScopeInfo copyScopeapplyImportDirectiveMlookupImportedName mapImportDirmapUsing mapRenamingnoGeneralizedVarsIfLetOpen openModule_$fMonadFixityErrorTCMT KeepNames AddContext addContext contextSize modifyContextsafeInTopContext inTopContext escapeContext checkpoint updateContextcheckpointSubstitution'getModuleParameterSubaddCtxaddRecordNameContextunderAbstractionunderAbstraction'underAbstractionAbsunderAbstractionAbs'underAbstraction_getLetBindingsaddLetBinding' addLetBinding getContextgetContextSizegetContextArgsgetContextTermsgetContextTelescopegetContextNameslookupBV typeOfBV'typeOfBVnameOfBV getVarInfo$fAddContextTele$fAddContext[]$fAddContextName$fAddContextDom$fAddContext(,)$fAddContext(,)0$fAddContext(,)1$fAddContext(,)2$fAddContext(,)3$fAddContextDom0$fAddContextDom1$fAddContext(,)4$fAddContext[]0$fAddContextKeepNames$fAddContext(,)5 addConstant setTerminatessetCompiledClauses setSplitTreemodifyFunClauses addClausesmkPragma addPragmagetUniqueCompilerPragmasetFunctionFlag markStatic markInline markInjectiveunionSignatures addSectionsetModuleCheckpoint getSectionaddDisplayForms applySection applySection'addDisplayFormisLocalgetDisplayFormschaseDisplayFormshasLoopingDisplayForm canonicalNamesameDef whatInductionsingleConstructorTypesigErrordefaultGetRewriteRulesForgetOriginalProjectiondefaultGetConstInfo getConInfo getPolarity' setPolarity getForcedArgsgetArgOccurrencesetArgOccurrencesmodifyArgOccurrences setTreelesssetCompiledArgUse getCompiledgetErasedConArgssetErasedConArgs getTreelessgetCompiledArgUse addDataCons getMutual getMutual_ setMutualmutuallyRecursivedefinitelyNonRecursive_getCurrentModuleFreeVars getDefModulegetDefFreeVarsfreeVarsToApplygetModuleFreeVarsmoduleParamsToApplyinstantiateDefinstantiateRewriteRuleinstantiateRewriteRules makeAbstractinAbstractModeinConcreteModeignoreAbstractModeinConcreteOrAbstractModetreatAbstractlytreatAbstractly' typeOfConst relOfConstmodalityOfConst droppedPars isProjection isProjection_ isStaticFun isInlineFunisProperProjectionprojectionArgsusesCopatternsapplyDef$fHasConstInfoStateT$fHasConstInfoWriterT$fHasConstInfoReaderT$fHasConstInfoExceptT$fHasConstInfoMaybeT$fHasConstInfoTCMTgetConstructorData getConHead enterClosure withClosure mapClosure UnFreezeMeta unfreezeMetaIsInstantiatedMetaisInstantiatedMetadontAssignMetas getMetaStoremodifyMetaStoremetasCreatedBy lookupMeta' updateMetaVar insertMetaVargetMetaPriority isSortMeta isSortMeta_ getMetaTypegetMetaContextArgsgetMetaTypeInContextisInstantiatedMeta'allMetasconstraintMetascreateMetaInfocreateMetaInfo'setValueMetaNamegetMetaNameSuggestionsetMetaNameSuggestionsetMetaArgInfoupdateMetaVarRangesetMetaOccursCheckmodifyInteractionPointsregisterInteractionPointfindInteractionPoint_connectInteractionPointremoveInteractionPointgetInteractionPointsgetInteractionMetasgetInteractionIdsAndMetasisInteractionMetalookupInteractionPointlookupInteractionIdlookupInteractionMetalookupInteractionMeta_newMeta'getInteractionRange getMetaRangegetInteractionScope withMetaInfo' withMetaInfogetMetaVariableSetgetMetaVariablesgetInstantiatedMetas getOpenMetas isOpenMeta listenToMetaunlistenToMetagetMetaListenersclearMetaListenerswithFreezeMetas freezeMetas freezeMetas' unfreezeMetasunfreezeMetas'isFrozen$fIsInstantiatedMetaAbs$fIsInstantiatedMetaArg$fIsInstantiatedMetaMaybe$fIsInstantiatedMeta[]$fIsInstantiatedMetaLevelAtom$fIsInstantiatedMetaPlusLevel$fIsInstantiatedMetaLevel$fIsInstantiatedMetaTerm$fIsInstantiatedMetaMetaId$fUnFreezeMetaAbs$fUnFreezeMeta[]$fUnFreezeMetaLevelAtom$fUnFreezeMetaPlusLevel$fUnFreezeMetaLevel$fUnFreezeMetaSort$fUnFreezeMetaTerm$fUnFreezeMetaType'$fUnFreezeMetaMetaIdConstraintStatusAwakeConstraintSleepingConstraintstealConstraintssolvingProblemsolvingProblemsisProblemSolvedgetConstraintsForProblemgetAwakeConstraintswakeConstraintsdropConstraintsputConstraintsToSleepputAllConstraintsToSleepholdConstraintstakeAwakeConstrainttakeAwakeConstraint'getAllConstraintswithConstraintbuildProblemConstraintbuildProblemConstraint_buildConstraintaddConstraint'addAwakeConstraint'addConstraintToaddAwakeConstraintsnowSolvingConstraintsisSolvingConstraintsmapAwakeConstraintsmapSleepingConstraintsmodifyAwakeConstraintsmodifySleepingConstraints$fEqConstraintStatus$fShowConstraintStatus$fEmbPrjForeignCode$fEmbPrjCompilerPragma$fEmbPrjSubstitution'$fEmbPrjBuiltin$fEmbPrjPattern'$fEmbPrjPatOrigin$fEmbPrjDBPatVar$fEmbPrjConPatternInfo$fEmbPrjClause$fEmbPrjTermHead$fEmbPrjFunctionInverse'$fEmbPrjCompiledClauses' $fEmbPrjCase$fEmbPrjWithArity$fEmbPrjFunctionFlag$fEmbPrjSplitTree'$fEmbPrjSplitTag $fEmbPrjDefn$fEmbPrjEtaEquality$fEmbPrjOccurrence$fEmbPrjDoGeneralize$fEmbPrjNumGeneralizableArgs$fEmbPrjIsForced$fEmbPrjPolarity$fEmbPrjExtLamInfo$fEmbPrjSystem$fEmbPrjProjLams$fEmbPrjProjection$fEmbPrjRewriteRule$fEmbPrjNLPType $fEmbPrjNLPat$fEmbPrjDefinition$fEmbPrjCompKit$fEmbPrjMutualId$fEmbPrjDisplayTerm$fEmbPrjCheckpointId $fEmbPrjOpen$fEmbPrjDisplayForm $fEmbPrjSort$fEmbPrjLevelAtom$fEmbPrjPlusLevel $fEmbPrjLevel $fEmbPrjTerm $fEmbPrjAbs $fEmbPrjType'$fEmbPrjConHead $fEmbPrjElim' $fEmbPrjDrop$fEmbPrjPermutation $fEmbPrjTele$fEmbPrjSection$fEmbPrjSignature$fEmbPrjScopeInfo$fEmbPrjPrecedence$fEmbPrjParenPreference$fEmbPrjConPatLazy$fEmbPrjConPatInfo$fEmbPrjLocalVar$fEmbPrjBinder$fEmbPrjKindOfName$fEmbPrjAbstractModule$fEmbPrjNameMetadata$fEmbPrjAbstractName$fEmbPrjWhyInScope$fEmbPrjNameSpace$fEmbPrjAccess$fEmbPrjNameSpaceId $fEmbPrjScope$fEmbPrjBindName$fEmbPrjCutOff$fEmbPrjWarningName$fEmbPrjWarningMode$fEmbPrjPragmaOptions $fEmbPrjDoc$fEmbPrjLibPositionInfo$fEmbPrjLibWarning'$fEmbPrjLibWarning$fEmbPrjDeclarationWarning$fEmbPrjWarning$fEmbPrjTCWarning$fEmbPrjInterfaceencodedecodeencodeInterface encodeFiledecodeInterface decodeHashes decodeFile useTerPragma newSection checkFunDef' checkFunDefbindBuiltinFlatbindBuiltinSharpbindBuiltinInf typeOfFlat typeOfSharp typeOfInf addCtxTelapplyWhenVerboseS$fHasConstInfoReduceM$fMonadDebugReduceM$fHasBuiltinsReduceMisRecordConstructorisGeneratedRecordConstructoretaContractRecordgetRecordFieldNames isEtaRecordisRecordYesNoDontKnowmatchCopatterns matchPatternsbuildSubstitutionExpandPatternSynonymsexpandPatternSynonymsexpandLitPatternexpandPatternSynonyms'$fExpandPatternSynonymsPattern''$fExpandPatternSynonymsFieldAssignment'$fExpandPatternSynonymsNamed$fExpandPatternSynonymsArg$fExpandPatternSynonyms[]$fExpandPatternSynonymsMaybe MentionsMeta mentionsMeta$fMentionsMetaConstraint$fMentionsMetaProblemConstraint$fMentionsMetaTele$fMentionsMetaElim'$fMentionsMetaClosure$fMentionsMeta(,,)$fMentionsMeta(,)$fMentionsMetaMaybe$fMentionsMeta[]$fMentionsMetaDom$fMentionsMetaArg$fMentionsMetaAbs$fMentionsMetaSort$fMentionsMetaType'$fMentionsMetaLevelAtom$fMentionsMetaPlusLevel$fMentionsMetaLevel$fMentionsMetaTerm BinAppViewNoApp binAppView etaContractetaOnceetaConetaLamInstantiateFullinstantiateFull' Normalise normalise'Simplify simplify'reduce'reduceB' Instantiate instantiate' instantiateinstantiateFullreducereduceB normalise normaliseBsimplifyisFullyInstantiatedMeta ifBlocked isBlocked ifBlockedType isBlockedType reduceIApply blockedOrMeta reduceIApply'shouldTryFastReducemaybeFastReduceTermslowReduceTermunfoldCorecursionEunfoldCorecursionunfoldDefinitionunfoldDefinitionEunfoldDefinition'unfoldDefinitionStep reduceDefCopy reduceHead unfoldInlinedappDef_appDefE_appDefappDefEappDef'appDefE'simplifyBlocked'slowNormaliseArgs$fInstantiateEqualityView$fInstantiateCandidate$fInstantiateMap$fInstantiateConstraint$fInstantiateTele$fInstantiateClosure$fInstantiate(,,)$fInstantiate(,)$fInstantiate[]$fInstantiateMaybe$fInstantiateDom$fInstantiateArg$fInstantiateAbs$fInstantiateElim'$fInstantiateSort$fInstantiateType'$fInstantiateBlocked$fInstantiateLevelAtom$fInstantiatePlusLevel$fInstantiateLevel$fInstantiateTerm$fReduceEqualityView$fReduceCandidate $fReduceMap$fReduceConstraint $fReduceTele$fReduceClosure $fReduceTerm $fReduce(,,) $fReduce(,) $fReduceDom $fReduceArg $fReduce[] $fReduceAbs$fReduceLevelAtom$fReducePlusLevel $fReduceLevel $fReduceElim' $fReduceSort $fReduceType'$fSimplifyEqualityView$fSimplifyCandidate$fSimplifyDisplayForm$fSimplifyBool$fSimplifyConstraint$fSimplifyProblemConstraint$fSimplifyTele$fSimplifyClosure$fSimplify(,,) $fSimplify(,)$fSimplifyMaybe $fSimplifyMap $fSimplify[] $fSimplifyDom$fSimplifyNamed $fSimplifyArg $fSimplifyAbs$fSimplifyLevelAtom$fSimplifyPlusLevel$fSimplifyLevel$fSimplifySort$fSimplifyElim'$fSimplifyType'$fSimplifyTerm$fNormaliseEqualityView$fNormaliseCandidate$fNormaliseMaybe$fNormaliseMap$fNormaliseDisplayForm$fNormalisePattern'$fNormaliseDBPatVar$fNormaliseConPatternInfo$fNormaliseChar$fNormaliseInt$fNormaliseBool$fNormaliseConstraint$fNormaliseProblemConstraint$fNormaliseTele$fNormaliseClosure$fNormalise(,,)$fNormalise(,) $fNormalise[]$fNormaliseDom$fNormaliseNamed$fNormaliseArg$fNormaliseAbs$fNormaliseLevelAtom$fNormalisePlusLevel$fNormaliseLevel$fNormaliseElim'$fNormaliseTerm$fNormaliseType'$fNormaliseSort$fInstantiateFullEqualityView$fInstantiateFullCandidate$fInstantiateFullMaybe$fInstantiateFullConHead$fInstantiateFullQName$fInstantiateFullBuiltin$fInstantiateFullInterface$fInstantiateFullClause!$fInstantiateFullCompiledClauses'$fInstantiateFullCase$fInstantiateFullWithArity!$fInstantiateFullFunctionInverse'$fInstantiateFullSystem$fInstantiateFullExtLamInfo$fInstantiateFullDefn$fInstantiateFullDisplayTerm$fInstantiateFullDisplayForm$fInstantiateFullOpen$fInstantiateFullRewriteRule$fInstantiateFullNLPType$fInstantiateFullNLPat$fInstantiateFullDefinition$fInstantiateFullChar$fInstantiateFullTele$fInstantiateFullSection$fInstantiateFullSignature$fInstantiateFullScope$fInstantiateFullModuleName$fInstantiateFullHashMap$fInstantiateFullMap$fInstantiateFullElim'$fInstantiateFullConstraint"$fInstantiateFullProblemConstraint$fInstantiateFullClosure$fInstantiateFull(,,)$fInstantiateFull(,)$fInstantiateFull[]$fInstantiateFullDom$fInstantiateFullNamed$fInstantiateFullArg$fInstantiateFullAbs$fInstantiateFullPattern'$fInstantiateFullDBPatVar$fInstantiateFullConPatternInfo$fInstantiateFullInt$fInstantiateFullBool$fInstantiateFullSubstitution'$fInstantiateFullLevelAtom$fInstantiateFullPlusLevel$fInstantiateFullLevel$fInstantiateFullTerm$fInstantiateFullType'$fInstantiateFullSort$fInstantiateFullNameOutputTypeName OutputTypeVarOutputTypeVisiblePiOutputTypeNameNotYetKnownNoOutputTypeName Boundary'BoundarySplitTel firstPart secondPart splitPerm flattenTel reorderTel reorderTel_ unflattenTel teleNames teleArgNamesteleArgswithNamedArgsFromTel teleNamedArgstele2NamedArgssplitTelescopeAt permuteTelvarDependenciessplitTelescopesplitTelescopeExactinstantiateTelescopeNinstantiateTelescopeexpandTelescopeVar telViewUpTo telViewUpTo' telViewPathtelViewUpToPathtelViewUpToPathBoundary' fullBoundarytelViewUpToPathBoundarytelViewUpToPathBoundaryPtelViewPathBoundaryP teleElims pathViewAsPi pathViewAsPi'pathViewAsPi'whnfpiOrPathtelView'UpToPath telView'PathisPath telePatterns telePatterns'mustBePiifPiifPiTypeifNotPi ifNotPiTypeifNotPiOrPathType typeAritygetOutputTypeNameaddTypedInstanceresolveUnknownInstanceDefsgetInstanceDefs $fPiApplyM[]$fPiApplyMNamed $fPiApplyMArg$fPiApplyMTermSynEqcheckSyntacticEquality$fSynEqArgInfo $fSynEqDom $fSynEqArg $fSynEqAbs $fSynEqElim' $fSynEq[] $fSynEqType' $fSynEqSort$fSynEqLevelAtom$fSynEqPlusLevel $fSynEqLevel $fSynEqTerm $fSynEqBool TermToPattern termToPatterndotPatternsToPatterns$fTermToPatternTermPattern'$fTermToPatternNamedNamed$fTermToPatternArgArg$fTermToPattern[][]LevelKitlvlTypelvlSuclvlMaxlvlZerotypeNamesucNamemaxNamezeroName levelTypelevelSucFunctionbuiltinLevelKit requireLevels haveLevelsunLevelreallyUnLevelViewunlevelWithKitunPlusV maybePrimCon maybePrimDef levelView levelView'levelLubsubLevel ForceNotFreeIsFree MaybeFreeNotFree forceNotFree$fForceNotFreeSort$fForceNotFreeLevelAtom$fForceNotFreePlusLevel$fForceNotFreeLevel$fForceNotFreeTerm$fForceNotFreeType'$fForceNotFreeElim'$fForceNotFree[]$fForceNotFreeAbs$fForceNotFreeDom$fForceNotFreeArg $fEqIsFree $fShowIsFreeensureEmptyType isEmptyTel isEmptyTypeSubstWithOriginsubstWithOrigin dtermToTermdisplayFormArities displayFormmatchDisplayForm $fMatchLevel $fMatchSort $fMatchTerm $fMatchElim' $fMatchArg $fMatch[]$fSubstWithOriginArg$fSubstWithOriginDisplayTerm$fSubstWithOriginTerm$fSubstWithOriginArg0$fSubstWithOriginElim'$fSubstWithOrigin[]leqLevelleqType equalLevel equalSort equalTypeequalTermOnFace equalTerm compareLevel compareSort compareTel compareType compareElims compareArgs compareAtomcompareTermOnFace compareTerm recursiveanyDefssanityCheckVarssanityCheckSubstreadlinevimFileescape wordBoundedmatchestoVimgenerateVimFile usedArgumentsstripUnusedArgumentsnormalizeNamesdetectIdentityFunctions$fSemigroupIdentityIntranslateBuiltins closedTerm addCoercions callCompiler callCompiler'eliminateDeadCode ToAbstract toAbstract WithNamesNameswithNameaskName toAbstract_toAbstractWithoutImplicitmkDefmkSettoAbstractPats$fToAbstract[][]$fToAbstractQNamedClause'$fToAbstractPattern(,)$fToAbstractSortExpr$fToAbstractTermExpr$fToAbstractLiteralExpr$fToAbstractAbs(,)$fToAbstract(,)Expr$fToAbstract(,)Expr0$fToAbstract(,)TypedBinding$fToAbstract[][]0$fToAbstractArgArg$fToAbstractNamedNamedRangeAndPragma ToConcrete toConcretebindToConcreteAbsToConEnvpreserveInteractionIds noTakenNames runAbsToConabstractToConcreteScopeabstractToConcreteCtxabstractToConcrete_abstractToConcreteHiding toConcreteCtx$fToConcreteNamedMetaExpr$fToConcreteInteractionIdExpr$fToConcreteLHSCore'Pattern$fToConcreteLHSLHS$fToConcreteSpineLHSLHS.$fToConcreteModuleApplicationModuleApplication$fToConcreteClause'[]$fToConcreteConstrDeclaration$fToConcreteMaybeMaybe$fToConcreteRHS(,,,))$fToConcreteWhereDeclarationsWhereClause'$fToConcreteLetBinding[]%$fToConcreteTypedBindingTypedBinding'!$fToConcreteLamBindingLamBinding',$fToConcreteFieldAssignment'FieldAssignment'$fToConcreteResolvedNameQName$fToConcreteAbstractNameQName$fToConcreteModuleNameQName$fToConcreteQNameQName$fToConcreteBindNameBoundName$fToConcreteNameName$fToConcreteNamedNamed $fToConcreteWithHidingWithHiding$fToConcreteArgArg$fToConcrete(,,)(,,)$fToConcrete(,)(,)$fToConcreteEitherEither$fToConcrete[][] $fToConcreteRangeAndPragmaPragma$fToConcreteDeclaration[]$fToConcreteUserPatternArg$fToConcreteUserPatternPattern'$fToConcretePattern'Pattern$fToConcreteSplitPatternArg $fToConcreteSplitPatternPattern'"$fToConcreteBindingPatternPattern'$fToConcreteFreshenNameName$fToConcreteExprExpr$fHasRangeMaybeSection$fEqMaybeSection$fShowMaybeSection$fFunctorMaybeSection$fFoldableMaybeSection$fTraversableMaybeSectionshowAprettyAprettyAsshowATop prettyATop NamedClauseReifyreify reifyWhen reifyPatterns$fReify(,,,)(,,,)$fReify(,,)(,,) $fReify(,)(,) $fReify[][]$fReifyElim'Elim' $fReifyDomArg $fReifyTele[] $fReifyAbs(,)$fReifyLevelExpr$fReifySortExpr$fReifyType'Expr$fReifyQNamed[] $fReifyArgArg$fReifyNamedNamed$fReifyTermExpr$fReifyLiteralExpr$fReifyDisplayTermExpr$fReifyMetaIdExpr$fReifyExprExpr$fReifyNameName$fReifyNamedClauseClause'$fReifyQNamedClause'$fMonoidMonoidMap$fSemigroupMonoidMap$fBlankVarsTypedBinding$fBlankVarsLamBinding$fBlankVarsRHS$fBlankVarsModuleName$fBlankVarsPattern'$fBlankVarsLHSCore'$fBlankVarsLHS$fBlankVarsProblemEq$fBlankVarsEither$fBlankVars(,)$fBlankVarsFieldAssignment' $fBlankVars[]$fBlankVarsNamed$fBlankVarsArg $fBinder(,) $fBinder[] $fBinderNamed $fBinderArg$fBinderFieldAssignment'$fBinderLetBinding$fBinderBindName$fBinderTypedBinding$fBinderLamBinding$fBinderPattern'$fBinderLHSCore' $fBinderLHS$fBlankVarsExpr$fBlankVarsClause'WithNode PrettyContext prettyTCMCtxprettyTCMPatternsprettyTCMPatternList$fPrettyTCMSplitTag$fPrettyTCMOccurrence$fPrettyTCMRewriteRule$fPrettyTCMType'$fPrettyTCMElim'$fPrettyTCMNLPType$fPrettyTCMNLPat$fPrettyTCMElim'0$fPrettyTCMPattern'$fPrettyTCMDBPatVar$fPrettyTCMTele$fPrettyTCMConHead$fPrettyTCMModuleName$fPrettyTCMQName$fPrettyTCMName$fPrettyTCMWithHiding$fPrettyTCMTypeCheckingProblem$fPrettyTCMConstraint$fPrettyTCMProblemConstraint$fPrettyTCMRelevance$fPrettyTCMTypedBinding$fPrettyTCMExpr$fPrettyTCMEqualityView$fPrettyTCMMaybeReduced$fPrettyTCMElim'1 $fPrettyTCM[]$fPrettyTCMMap$fPrettyTCMDom$fPrettyTCMArg$fPrettyTCMNamed$fPrettyTCMBlocked$fPrettyTCMMetaId$fPrettyTCMJudgement$fPrettyTCMClause$fPrettyTCMSubstitution'$fPrettyTCMTerm$fPrettyTCMIsForced$fPrettyTCMPolarity$fPrettyTCMPermutation$fPrettyTCMLevel$fPrettyTCMQNamed$fPrettyTCMNamedClause$fPrettyTCMDisplayTerm$fPrettyTCMSort$fPrettyTCMType'0$fPrettyTCMTerm0$fPrettyTCM(,,)$fPrettyTCM(,)$fPrettyTCM[]0$fPrettyTCMClosure$fPrettyTCMCheckpointId$fPrettyTCMRange'$fPrettyTCMProblemId$fPrettyTCMInt$fPrettyTCMLiteral$fPrettyTCMComparison$fPrettyTCMQName0$fPrettyTCMName0$fPrettyTCMBool$fPrettyTCMPrettyContext$fPrettyTCMGraph$fPrettyTCMWithNode telePiPath iApplyVarsOldSizeConstraintLeq OldSizeExprSizeMetacheckSizeLtSatcheckSizeNeverZerocheckSizeVarNeverZero isBoundedboundedSizeMetaHook trySizeUniv deepSizeView sizeMaxView compareSizescompareMaxViewscompareBelowMaxcompareSizeViewsgiveUptrivial isSizeProblemisSizeConstrainttakeSizeConstraintsgetSizeConstraints getSizeMetasoldComputeSizeConstraintsoldComputeSizeConstraint oldSizeExprflexibleVariablesoldCanonicalizeSizeConstraintoldSolveSizeConstraints oldSolver$fPrettyOldSizeExpr$fPrettyOldSizeConstraint$fEqOldSizeExpr$fShowOldSizeExpr$fShowOldSizeConstraintLHSState_lhsTel _lhsOutPat _lhsProblem _lhsTarget_lhsPartialSplit AbsurdPattern DotPattern AsBindingAsBProblem _problemEqs_problemRestPats _problemCont ChooseFlex chooseFlex FlexChoice ChooseLeft ChooseRight ChooseEither ExpandBoth FlexibleVar flexHiding flexOriginflexKindflexPosflexVarFlexibleVarKind RecordFlex ImplicitFlexDotFlex OtherFlex FlexibleVars allFlexVars problemEqsproblemRestPats problemCont problemInPatslhsTel lhsOutPat lhsProblem lhsTarget$fPrettyTCMProblemEq$fLensOriginFlexibleVar$fLensHidingFlexibleVar$fMonoidFlexChoice$fSemigroupFlexChoice$fChooseFlexFlexibleVar$fChooseFlexInt$fChooseFlexOrigin$fChooseFlexHiding$fChooseFlexMaybe$fChooseFlex[]$fChooseFlexFlexibleVarKind$fInstantiateFullAsBinding$fPrettyAsBinding$fPrettyTCMAsBinding$fSubstTermAsBinding$fPrettyTCMDotPattern$fSubstTermDotPattern$fPrettyTCMAbsurdPattern$fSubstTermAbsurdPattern$fSubstTermProblem$fEqFlexibleVarKind$fShowFlexibleVarKind$fEqFlexibleVar$fShowFlexibleVar$fFunctorFlexibleVar$fFoldableFlexibleVar$fTraversableFlexibleVar$fEqFlexChoice$fShowFlexChoice $fShowProblemcheckDisplayPragma QuotingKitquoteTermWithKitquoteTypeWithKitquoteClauseWithKitquoteDomWithKitquoteDefnWithKitquoteListWithKit quotingKit quoteString quoteNamequoteNat quoteConName quoteMeta quoteTerm quoteTypequoteDom quoteDefn quoteListUsableModality usableModUsableRelevance usableRelhideAndRelParams workOnTypes workOnTypes'applyRelevanceToContextapplyRelevanceToContextOnlyapplyRelevanceToJudgementOnlyapplyRelevanceToContextFunBodyapplyQuantityToContextapplyQuantityToContextOnlyapplyQuantityToJudgementOnlyapplyModalityToContextapplyModalityToContextOnlyapplyModalityToJudgementOnlyapplyModalityToContextFunBodywakeIrrelevantVarsisPropMisIrrelevantOrPropM$fUsableRelevanceAbs$fUsableRelevanceDom$fUsableRelevanceArg$fUsableRelevanceElim'$fUsableRelevance(,)$fUsableRelevance[]$fUsableRelevanceLevelAtom$fUsableRelevancePlusLevel$fUsableRelevanceLevel$fUsableRelevanceSort$fUsableRelevanceType'$fUsableRelevanceTerm$fUsableModalityAbs$fUsableModalityDom$fUsableModalityArg$fUsableModalityElim'$fUsableModality(,)$fUsableModality[]$fUsableModalityLevel$fUsableModalitySort$fUsableModalityType'$fUsableModalityTerm inferUnivSort sortFitsIn hasBiggerSort inferPiSort inferFunSortptsRuleptsRule' hasPTSRulecheckTelePiSortNormaliseProjPnormaliseProjPElimTypeArgTProjTprojTRec projTFieldmkCon orderFieldsinsertMissingFields recordModule getRecordDefgetRecordOfFieldrecordFieldNamesfindPossibleRecordsgetRecordFieldTypesgetRecordTypeFieldsgetRecordConstructor isRecordType tryRecordTypeorigProjection getDefType projectTyped typeElimsisEtaConisInductiveRecordisEtaRecordTypeunguardedRecordrecursiveRecordnonRecursiveRecordisRecursiveRecordetaExpandBoundVarexpandRecordVarexpandRecordVarsRecursivelycurryAtetaExpandRecordforceEtaExpandRecordetaExpandRecord'etaExpandRecord_etaExpandRecord'_etaExpandAtRecordTypeisSingletonRecord isSingletonRecordModuloRelevanceisSingletonRecord'isSingletonTypeisSingletonTypeModuloRelevanceisSingletonType'isEtaVaremap$fPrettyTCMElimType$fNormaliseProjPPattern'$fNormaliseProjPNamed$fNormaliseProjPArg$fNormaliseProjP[]$fNormaliseProjPClauseImplicitInsertion ImpInsert BadImplicits NoSuchNameNoInsertNeeded implicitArgsimplicitNamedArgs newMetaArgnewInteractionMetaArginsertImplicitinsertImplicit'$fShowImplicitInsertion implicitPinsertImplicitPatternsinsertImplicitSizeLtPatternsinsertImplicitPatternsTuseNamesFromPattern useOriginFrom noProblemRest initLHSStateupdateProblemRestetaExpandClausegetDefForcedVariablesforcedVariablescomputeForcingAnnotationsisForced nextIsForcedforceTranslateTelescoperebindForcedPatternrebindsdotForcedPatterns$fForcedVariablesTerm$fForcedVariablesArg$fForcedVariablesElim'$fForcedVariables[]ConstructorInfoDataCon RecordCon getConFormgetOrigConHead consOfHITgetFullyAppliedConTypegetConstructorInfo isDatatypeisDataOrRecordTypeisDataOrRecordgetNumberOfParametersgetConstructorsgetConstructors'getConstructors_ getConHeads getConHeads' getConHeads_PostponedEquationsPostponedEquation eqFreeVarseqLhseqRhsNLMState_nlmSub_nlmEqsNLM PatternFrom patternFromnlmSubnlmEqsrunNLMmatchingBlockedtellSubtellEq reallyFreemakeSubstitutioncheckPostponedEquations nonLinMatchequal$fPatternFromType'TermNLPat$fPatternFrom()SortNLPat$fPatternFrom()Type'NLPType$fPatternFromtDomDom$fPatternFrom(,)[][]$fPatternFromDomArgArg$fNullNLMState$fMatchType'NLPatTerm$fMatch()NLPatLevel$fMatch()NLPatSort$fMatch()NLPTypeType'$fMatchtDomDom$fMatch(,)[][]$fMatchDomArgArgrecordPatternToProjectionstranslateCompiledClausestranslateSplitTreetranslateRecordPatterns $fDropFrom[] $fDropFrom(,)$fDropFromSplitTree' $fPrettyTCM-> $fPretty->$fPrettyTCMEither$fFunctorRecPatM$fApplicativeRecPatM$fMonadRecPatM$fMonadIORecPatM$fMonadTCMRecPatM$fHasOptionsRecPatM$fMonadDebugRecPatM$fMonadTCEnvRecPatM$fMonadTCStateRecPatM$fEqKindDefNodeArgNodeComputeOccurrences occurrencesOccMOccEnvvarsinfOccurrencesBuilder'Concat' OccursAs' OccursHere'OccurrencesBuilderConcatOccursAs OccursHere OnlyVarsUpTo OccurrencesItemAnArgADefcheckStrictlyPositive getDefArityemptyOB>+< preprocessflattenwithExtendedOccEnvwithExtendedOccEnv'getOccurrencescomputeOccurrencescomputeOccurrences' mergeEdgesbuildOccurrenceGraph computeEdges$fPrettyTCMSeq$fHasRangeItem$fComputeOccurrences(,)$fComputeOccurrencesMaybe$fComputeOccurrences[]$fComputeOccurrencesDom$fComputeOccurrencesArg$fComputeOccurrencesElim'$fComputeOccurrencesAbs$fComputeOccurrencesTele$fComputeOccurrencesType'$fComputeOccurrencesLevelAtom$fComputeOccurrencesPlusLevel$fComputeOccurrencesLevel$fComputeOccurrencesTerm$fComputeOccurrencesClause$fPrettyTCMNode$fSemiRingEdge$fEqItem $fOrdItem $fShowItemProjectionViewLoneProjectionLike NoProjection projViewProj projViewSelf projViewSpine unProjViewprojViewreduceProjectionLikeelimView HasPolarity polaritiesneg polFromOcc nextPolaritypurgeNonvariantpolarityFromPositivityenablePhantomTypesdependentPolarityrelevantInIgnoringNonvariant sizePolaritycheckSizeIndexpolarity$fHasPolarityLevelAtom$fHasPolarityPlusLevel$fHasPolarityLevel$fHasPolarityTerm$fHasPolarityElim'$fHasPolarityType'$fHasPolarity(,)$fHasPolarity[]$fHasPolarityAbs$fHasPolarityDom$fHasPolarityArg matchedArgs foldMatch mergeElim mergeElimsmatchCopattern matchPatternyesSimplification $fNullMatch$fFunctorMatch PruneResultNothingToPrune PrunedNothingPrunedSomethingPrunedEverything FoldRigid foldRigidoccurs metaOccursVarsUnfoldStrategy YesUnfoldNoUnfold OccursCtxIrrelmodifyOccursCheckDefsinitOccursCheckdefNeedsCheckingtallyDefdefArgsunfoldweaklystronglypatternViolation'abort goIrrelevant goNonStrict allowedVar takeRelevanttakeAll liftUnderAbs occursCheckprune hasBadRigid isNeutralrigidVarsNotContainedInkillArgs killedTypereallyNotFreeIn performKill $fOccursMaybe $fOccurs[] $fOccurs(,) $fOccursDom $fOccursArg $fOccursAbs $fOccursElim' $fOccursSort $fOccursType'$fOccursLevelAtom$fOccursPlusLevel $fOccursLevel$fOccursClause $fOccursDefn $fOccursQName$fFoldRigid(,) $fFoldRigid[]$fFoldRigidElim'$fFoldRigidDom$fFoldRigidArg$fFoldRigidAbs$fFoldRigidLevelAtom$fFoldRigidPlusLevel$fFoldRigidLevel$fFoldRigidSort$fFoldRigidType'$fFoldRigidTerm $fOccursTerm $fEqOccursCtx$fShowOccursCtx$fEqUnfoldStrategy$fShowUnfoldStrategy$fEqPruneResult$fShowPruneResult BlockingVars BlockingVar blockingVarNoblockingVarConsblockingVarLitsblockingVarOverlapBlockedOnResult BlockedOnProjBlockedOnApplyNotBlockedOnResultblockedOnResultOverlapblockedOnResultIApply ApplyOrIApplyIsApplyIsIApplyBlockblockedOnResult blockedOnVars SplitPattern SplitPatVarsplitPatVarNamesplitPatVarIndexsplitExcludedLitstoSplitPatternsfromSplitPatterns toSplitPSubstapplySplitPSubstisTrivialPatternsetBlockingVarOverlap$fDeBruijnSplitPatVar$fPrettyTCMSplitPatVar$fPrettySplitPatVar$fPrettyBlockingVar$fShowSplitPatVar$fShowBlockingVarStackFrameCallPath callInfosMaskedgetMask getMaskedMaskedDeBruijnPatternsUsableSizeVarsusableSizeVarsTerMterMMonadTerterAskterLocalterAsksTerEnvterUseDotPatternsterInlineWithFunctions terSizeSucterSharp terCutOff terCurrent terMutual terUserNamesterHaveInlinedWith terTarget terDelayed terMaskArgs terMaskResult _terSizeDepth terPatternsterPatternsRaise terGuarded terUseSizeLt terUsableVarsTarget MutualNames defaultTerEnvrunTer runTerDefaultterGetInlineWithFunctionsterGetUseDotPatternsterSetUseDotPatterns terGetSizeSuc terGetCurrent terSetCurrent terGetSharp terGetCutOff terGetMutualterGetUserNames terGetTarget terSetTargetterGetHaveInlinedWithterSetHaveInlinedWith terGetDelayed terSetDelayedterGetMaskArgsterSetMaskArgsterGetMaskResultterSetMaskResultterGetPatternsterSetPatternsterRaise terGetGuardedterModifyGuarded terSetGuarded terUnguarded terSizeDepthterGetUsableVarsterModifyUsableVarsterSetUsableVarsterGetUseSizeLtterModifyUseSizeLtterSetUseSizeLtwithUsableVars conUseSizeLt projUseSizeLtisProjectionButNotCoinductiveisCoinductiveProjection patternDepth unusedVarmasked notMaskedterSetSizeDepth$fPrettyTCMMasked$fDecorationMasked $fMonoidTerM$fSemigroupTerM$fUsableSizeVars[]$fUsableSizeVarsMasked$fUsableSizeVars[]0$fUsableSizeVarsPattern'$fMonadTerTerM$fPrettyCallPath $fEqMasked $fOrdMasked $fShowMasked$fFunctorMasked$fFoldableMasked$fTraversableMasked $fFunctorTerM$fApplicativeTerM $fMonadTerM$fMonadFailTerM$fMonadErrorTerM$fMonadBenchTerM$fHasOptionsTerM$fMonadDebugTerM$fHasConstInfoTerM $fMonadIOTerM$fMonadTCEnvTerM$fMonadTCStateTerM$fMonadTCMTerM$fReadTCStateTerM$fMonadReduceTerM$fShowCallPath$fSemigroupCallPath$fMonoidCallPath$fAllNamesCallPathinlineWithClausesisWithFunctionexpandWithFunctionCallprettyTCWarningsprettyTCWarnings'tcWarningsToErrorapplyFlagsToTCWarnings'applyFlagsToTCWarnings tcErrString stringTCErrdropTopLevelModule$fPrettyTCMCall$fPrettyTCMUnificationFailure$fPrettyTCMNegativeUnification$fPrettyTCMSplitError$fPrettyTCMCallInfo$fPrettyTCMTCErr$fPrettyTCMWarning$fPrettyTCMTCWarning$fPrettyUnequalType'$fPrettyUnequalTerm$fVerbalizeQuantity$fVerbalizeRelevance$fVerbalizeHiding$fVerbalizeIndefinite$fPrettyTCMTypeErrorNamesTunName runNamesTrunNames currentCxtcxtSubstinCxtcl'clopenglamglamNlamilam$fHasBuiltinsNamesT$fFunctorNamesT$fApplicativeNamesT $fMonadNamesT$fMonadFailNamesT$fMonadTransNamesT$fMonadStateNamesT$fMonadIONamesT$fHasOptionsNamesT$fMonadDebugNamesT$fMonadTCEnvNamesT$fMonadTCStateNamesT$fMonadTCMNamesT$fReadTCStateNamesT$fMonadReduceNamesTPredRelOp FamilyOrNotIsFamIsNotfamThing TranspOrHCompDoTranspDoHCompFromTermfromTermFromTermFunctionToTermtoTermtoTermRPrimTermprimTermPrimTypeprimTypeLvlunLvlunNat PrimitiveImplPrimImplSigmaKit sigmaNamesigmaConsigmaFstsigmaSnd getSigmaKit buildListredBind redReturnfromReducedTerm fromLiteralrequireCubical primINeg' primDepIMin'primIBin primIMin' primIMax'imaximinprimIdJ primIdElim'primPOr primPartial' primPartialP' primSubOut' primIdFace' primIdPath' primTrans' primHComp' cmdToNameprimTransHCompprimComplistS primGlue' prim_glue' prim_unglue'primFaceForall'decomposeIntervaldecomposeInterval'mkPrimInjectiveprimCharToNatInjectiveprimStringToListInjectivegetReflprimEraseEqualitygetReflArgInfo genPrimForce primForceprimForceLemmamkPrimLevelZeromkPrimLevelSucmkPrimLevelMaxmkPrimSetOmega mkPrimFun1TCM mkPrimFun1 mkPrimFun2 mkPrimFun4-->.-->..-->garrgpihPinPihPi'nPi'pPi'el'elInfnolamvarMgApplygApply'<@><#><..><@@>listiopatheltset sSizeUniv tSizeUnivargNdomNargHdomHprimitiveFunctionslookupPrimitiveFunctionlookupPrimitiveFunctionQgetBuiltinName isBuiltin $fShowNat $fTermLikeNat $fIntegralNat $fShowLvl $fPrimTermIO $fPrimTerm[]$fPrimTermFixity'$fPrimTermType'$fPrimTermMetaId$fPrimTermQName $fPrimTermLvl $fPrimTermNat $fPrimTermStr$fPrimTermDouble$fPrimTermChar$fPrimTermBool$fPrimTermWord64$fPrimTermInteger $fPrimTypea $fPrimTerm-> $fToTerm[]$fToTermPrecedenceLevel$fToTermAssociativity$fToTermFixity$fToTermFixity'$fToTermArgInfo $fToTermType' $fToTermTerm $fToTermBool$fToTermInteger$fToTermMetaId $fToTermQName $fToTermStr $fToTermChar$fToTermDouble $fToTermLvl$fToTermWord64 $fToTermNat $fFromTerm[]$fFromTermBool$fFromTermMetaId$fFromTermQName $fFromTermStr$fFromTermChar$fFromTermDouble $fFromTermLvl$fFromTermWord64 $fFromTermNat$fFromTermInteger$fReduceFamilyOrNot $fEqSigmaKit$fShowSigmaKit$fEqNat$fOrdNat$fNumNat $fEnumNat $fRealNat$fEqLvl$fOrdLvl$fEqTranspOrHComp$fShowTranspOrHComp$fEqFamilyOrNot$fShowFamilyOrNot$fFunctorFamilyOrNot$fFoldableFamilyOrNot$fTraversableFamilyOrNot transpTel trFillTel simplifyTTerm $fShowAtom$fEqAtom $fOrdAtomcomputeErasedConstructorArgs eraseTerms $fEqTypeInfo$fShowTypeInfo BuiltinKitnateliminateLiteralPatterns transformeliminateCaseDefaults findInstanceisInstanceConstraintisConsideringInstancepostponeInstanceConstraints$fShowYesNoMaybe newProblem newProblem_whenConstraintswakeConstraints'wakeupConstraintswakeupConstraints_solveAwakeConstraintssolveConstraint_checkTypeCheckingProblem InvertExcept CantInvert NeutralArg ProjectedVarRes SubstCandFVsReduceAndEtaContractreduceAndEtaContract ProjVarExcNoProjectedVarnoProjectedVarMetaKindRecordsSingletonRecordsLevelsfindIdx isBlockedTermisEtaExpandable assignTerm'newSortMetaBelowInfnewSortMetaCtx newTypeMeta newTypeMeta_newInstanceMetaCtxnewValueMetaCtx newValueMeta'newValueMetaCtx' trueConditionnewArgsMetaCtxnewArgsMetaCtx' newRecordMetanewRecordMetaCtxnewQuestionMarknewQuestionMark' blockTermblockTermOnProblemblockTypeOnProblemunblockedTesterpostponeTypeCheckingProblem_postponeTypeCheckingProblemetaExpandListenerswakeupListener allMetaKinds etaExpandMetaetaExpandBlocked assignWrapper assignMeta assignMeta'subtypingForSizeLtexpandProjectedVarsetaExpandProjectedVarcheckLinearity inverseSubstopenMetasToPostulates$fNoProjectedVar[]$fNoProjectedVarArg$fNoProjectedVarTerm$fReduceAndEtaContractTerm$fReduceAndEtaContractArg$fReduceAndEtaContract[] $fEqMetaKind$fEnumMetaKind$fBoundedMetaKind$fShowMetaKind MaybeAbortAbort KeepGoingInvViewInvNoInv headSymbol headSymbol' topLevelArg joinHeadMaps updateHeadscheckInjectivitycheckOverapplicationinstantiateVarHeadsfunctionInverseuseInjectivityinvertFunctionforcePiUsingInjectivityFullPartialprintHighlightingInfogenerateAndPrintSyntaxInfogenerateTokenInfogenerateTokenInfoFromSourcegenerateTokenInfoFromStringprintSyntaxInfoprintErrorInfoerrorHighlightingwarningHighlightingprintUnsolvedInfocomputeUnsolvedMetaWarningscomputeUnsolvedConstraintsstoreDisambiguatedNamedisambiguateRecordFieldsConj tryConversiontryConversion'sameVars intersectVars equalAtom convErrorassignEcompareTermDir compareTerm' etaInequalcompareAtomDircomputeElimHeadType compareDomcompareRelevance antiUnify antiUnifyTypeantiUnifyElimscompareIrrelevantcompareWithPol polFromCmpcoerce coerceSizeleqSort equalLevel'forallFaceMapscompareInterval isCanonical leqIntervalleqConjcompareTermOnFace' bothAbsurd ErrorPartStrPartTermPartunquote UnquoteResUnquoteM UnquoteStateDirtyClean agdaTermType agdaTypeType qNameTypeunpackUnquoteM packUnquoteM runUnquoteMliftU1liftU2inOriginalContextisConisDefreduceQuotedTermunquoteN ensureDef ensureConpickName unquoteStringunquoteNString unquoteTCMevalTCM$fUnquoteClause$fUnquotePattern $fUnquoteTerm$fUnquoteLiteral $fUnquoteSort $fUnquoteDom$fUnquoteMetaId $fUnquoteAbs$fUnquoteQName$fUnquoteRelevance$fUnquoteHiding $fUnquote[] $fUnquoteStr $fUnquoteChar$fUnquoteDouble$fUnquoteWord64$fUnquoteInteger $fUnquoteBool$fUnquoteElim' $fUnquoteArg$fUnquoteArgInfo$fUnquoteModality$fUnquoteErrorPart$fPrettyTCMErrorPart $fEqDirtyHypSizeConstraint sizeContext sizeHypIdssizeHypothesessizeConstraintSizeConstraint DBSizeExpr sizeMetaId sizeMetaArgs NamedRigid rigidName rigidIndexDefaultToInftyDontDefaultToInftyCCsolveSizeConstraintscastConstraintToCurrentContext'castConstraintToCurrentContextsolveSizeConstraints_ solveClustergetSizeHypothesescanonicalizeSizeConstraintcomputeSizeConstraintsizeExpr unSizeExpr$fPlusNamedRigidIntNamedRigid$fPrettyNamedRigid$fOrdNamedRigid$fEqNamedRigid$fSubstTermSizeExpr'$fSubstTermSizeMeta$fPrettyTCMSizeMeta$fPrettySizeMeta $fOrdSizeMeta $fEqSizeMeta$fPrettyTCMConstraint'$fSubstTermConstraint'$fPrettyTCMHypSizeConstraint $fFlexsSizeMetaHypSizeConstraint$fEqDefaultToInfty$fOrdDefaultToInfty$fShowDefaultToInfty$fShowNamedRigid$fShowSizeMetaUnificationResult'UnifiesNoUnifyUnificationResult unifyIndices$fReduceEquality$fPrettyTCMUnifyState$fNormaliseUnifyState$fReduceUnifyState$fPrettyTCMUnifyStep$fMonoidUnifyOutput$fSemigroupUnifyOutput$fShowUnificationResult'$fFunctorUnificationResult'$fFoldableUnificationResult'$fTraversableUnificationResult'$fShowUnifyState$fShowUnifyStepcheckIApplyConfluence_checkIApplyConfluence preAction postActionrelevanceAction inferSortreconstructParametersInTypereconstructParametersInTelreconstructParametersInEqViewreconstructParametersdropParameters etaExpandOnce deepEtaExpandetaExpandAction GetMatchables getMatchables NLPatVarsnlPatVarsUnder nlPatVarsRelView relViewTel relViewDelta relViewType relViewType' relViewCorerequireOptionRewritingrelViewaddRewriteRuleaddRewriteRules rewriteWithrewArity $fFreeNLPType $fFreeNLPat$fNLPatVarsNLPat$fNLPatVarsNLPType $fNLPatVarsf$fGetMatchablesRewriteRule$fGetMatchablesNLPat$fGetMatchablesf$fPrettyFastCase$fPrettyFastCompiledClauses $fPrettyThunk$fPrettyClosure$fPrettyPointer$fPrettyCatchAllFrame$fPrettyMatchStack$fZipperElimZipper$fPrettyControlFrame $fPrettyAM$fEqNormalisation$fFunctorThunk$fEqElimZipper$fOrdElimZipper$fShowElimZipper$fFunctorElimZipper$fFoldableElimZipper$fTraversableElimZipperAbsTermabsTerm IsPrefixOf isPrefixOftypeOf abstractTypepiAbstractTerm piAbstract abstractTermswap01$fIsPrefixOfTerm$fIsPrefixOf[]$fIsPrefixOf[]0 $fAbsTerm(,) $fAbsTermAbs$fAbsTermMaybe $fAbsTerm[] $fAbsTermDom $fAbsTermArg$fAbsTermElim'$fAbsTermLevelAtom$fAbsTermPlusLevel$fAbsTermLevel $fAbsTermSort$fAbsTermType' $fAbsTermTermgeneralizeTelescopegeneralizeTypegeneralizeType' IsPathConsPathCons PointCons checkDataDef forceSortcheckConstructordefineCompDatadefineProjectionsfreshAbstractQName'_defineTranspForFieldsdefineTranspForFields'defineHCompForFieldsgetGeneralizedParametersbindGeneralizedParametersbindParameters bindParameterfitsIncheckIndexSorts constructs isCoinductive$fEqIsPathCons$fShowIsPathCons LHSResult lhsParameters lhsVarTele lhsPatterns lhsHasAbsurd lhsBodyType lhsPatSubst lhsAsBindingslhsPartialSplitIsFlexiblePatternmaybeFlexiblePatternisFlexiblePatternbindAsPatternscheckLeftHandSidecheckSortOfSplitVar$fIsFlexiblePatternNamed$fIsFlexiblePatternArg$fIsFlexiblePattern[]$fIsFlexiblePatternPattern'$fIsFlexiblePatternPattern'0$fMonoidLeftoverPatterns$fSemigroupLeftoverPatterns$fInstantiateFullLHSResultLamOrPiLamNotPiPiNotLamisType checkLevelnoFunctionsIntoSize isTypeEqualToleqType_checkGeneralizeTelescopecheckTelescopecheckPiTelescopecheckTelescope'checkTypedBindingsifPath checkPath checkLambdalambdaModalityChecklambdaIrrelevanceChecklambdaQuantityChecklambdaAddContextinsertHiddenLambdascheckAbsurdLambdacheckExtendedLambda!catchIlltypedPatternBlockedOnMetaexpandModuleAssignscheckRecordExpressioncheckRecordUpdate checkLiteral scopedExpr quoteGoal quoteContextunquoteMcheckQuestionMarkcheckUnderscore checkMeta inferMetacheckOrInferMeta domainFreecheckKnownArgumentscheckKnownArgument checkNamedArg inferExpr'defOrVarcheckDontExpandLastisModuleFreeVarinferExprForWithcheckLetBindingscheckLetBinding $fEqLamOrPi $fShowLamOrPisplitTelForWithwithFunctionType countWithArgs withArgumentsbuildWithFunctionstripWithClausePatternswithDisplayForm patsToElimsbindPostulatedName bindBuiltinisUntypedBuiltinbindUntypedBuiltinbindBuiltinNoDefbuiltinKindOfNameCovering covSplitArgcovSplitClauses SplitClauseSClausescTelscPatsscSubst scCheckpointsscTarget splitClausesclauseToSplitClause coverageCheck isCovered fixTargetsplitClauseWithAbsurd splitLast splitResult$fPrettyTCMSplitClause$fShowFixTarget$fEqAllowPartialCover$fShowAllowPartialCover$fMonoidErrorNonEmpty$fSemigroupErrorNonEmptyClsClclPatsclBodyRunRecordPatternTranslationDontRunRecordPatternTranslationcompileClauses'unBruijncompileWithSplitTreecompile nextSplit properSplitisVarsplitOnsplitCexpandCatchAllsensureNPatterns substBody$$fPrecomputeFreeVarsCompiledClauses' $fPrettyCl$fEqRunRecordPatternTranslation$fShowCl checkRecDefaddCompositionForRecorddefineCompKitRdefineTranspOrHCompRcheckRecordProjectionsClausesPostChecksCPCcpcPartialSplitsWithFunctionProblemNoWithFunction WithFunction wfParentNamewfName wfParentType wfParentTel wfBeforeTel wfAfterTelwfExprs wfExprTypes wfRHSType wfParentPatswfParentParams wfPermSplit wfPermParent wfPermFinal wfClausescheckMacroTypeisAlias checkAlias checkFunDefSinsertPatternsinsertPatternsLHSCorecheckSystemCoverage checkClausecheckRHS checkWithRHScheckWithFunction checkWhereatClause$fMonoidClausesPostChecks$fSemigroupClausesPostChecks toTreelessclosedTermToTreelessResulttermDecl termMutual$fExtractCallsLevelAtom$fExtractCallsPlusLevel$fExtractCallsTerm$fExtractCallsType'$fExtractCallsSort$fExtractCalls(,)$fExtractCalls[]$fExtractCallsElim'$fExtractCallsDom$fExtractCallsArg$fExtractCallsAbs$fStripAllProjectionsTerm$fStripAllProjections[]$fStripAllProjections[]0$fStripAllProjectionsArg$fExtractCallsLevelShowHeadshowHeadHighlightModuleContentsDontHightlightModuleContentsDoHighlightModuleContents FinalCheckscheckDeclCached mutualChecksrevisitRecordPatternTranslationcheckUnquoteDeclcheckUnquoteDef unquoteTopinstantiateDefinitionType highlight_checkTermination_checkPositivity_checkCoinductiveRecordscheckInjectivity_checkProjectionLikeness_whenAbstractFreezeMetasAftercheckGeneralize checkAxiom checkAxiom'checkPrimitiveassertCurrentModule checkPragma checkMutualcheckTypeSignaturecheckTypeSignature' checkSectioncheckModuleAritycheckSectionApplication' checkImportdebugPrintDecl$fShowHeadDeclaration$fEqHighlightModuleContentstranslateCopatternClauses$fHasRangeProjEntry $fRename(,)$fRenameEither $fRename[] $fRenameNamed $fRenameArg$fRenameDeclaration$fRenamePattern'$fRenameLHSCore' $fRenameLHS$fRenameWhereDeclarations $fRenameRHS$fRenameClause'$fRenameProblemEq$fRenameTypedBinding$fRenameLamBinding$fRenameLetBinding$fRenameFieldAssignment'$fRenameModuleName $fRenameExpr$fRenameBindName $fRenameName $fRenameQName $fAlpha[] $fAlphaNamed $fAlphaArg $fAlphaLHS$fAlphaLHSCore'$fAlphaPattern' $fAlphaName $fFunctorPath $fEqProjEntry$fOrdProjEntryparseLHS parsePatternparsePatternSynparseApplicationparseModuleApplication $fEqExprKind$fShowExprKindparseIdiomBracketsdesugarDoNotation LeftHandSide AbstractRHS RightHandSide TopLevelInfo topLevelDecls topLevelScopeTopLevel topLevelPathtopLevelExpectedNametopLevelTheThing OldModuleNameNewModuleQName NewModuleNameAPatNamePatNameOldNameOldQNameNewNameconcreteToAbstract_concreteToAbstractlocalToAbstract$$fToAbstractHoleContent'HoleContent'$fToAbstractPattern'Pattern'$fToAbstractLHSCore'LHSCore' $fToAbstractWithHidingWithHiding,$fToAbstractFieldAssignment'FieldAssignment'$fToAbstractMaybeMaybe$fToAbstractEitherEither$fToAbstract(,,)(,,)$fToAbstract(,)(,)%$fToAbstractRecordConstructorTypeExpr!$fToAbstractLamBinding'LamBinding$fToAbstractNewNameBindName$fToAbstractNewNameName$fToAbstractPatternPattern'$fToAbstractOldQNameExpr$fToAbstractLHSCoreLHSCore'$$fToAbstractResolveQNameResolvedName$fToAbstractPatNameAPatName$fToAbstractOldNameQName$fToQNameQName $fToQNameName#$fToAbstractNewModuleNameModuleName$$fToAbstractNewModuleQNameModuleName$fToAbstractModuleAssignment(,)#$fToAbstractOldModuleNameModuleName$fEnsureNoLetStms[]$fEnsureNoLetStmsLamBinding'$fEnsureNoLetStmsTypedBinding' $fToAbstractTopLevelTopLevelInfo%$fToAbstractTypedBinding'TypedBinding$fToAbstractExprExpr$fToAbstractLetDef[]$fToAbstractLetDefs[]$fToAbstractBlindBlind%$fToAbstractGenTelGeneralizeTelescope$fToAbstractGenTelAndType(,)$fLivesInCurrentModuleQName"$fLivesInCurrentModuleAbstractName!$fToAbstractConstrDeclDeclaration&$fToAbstractNiceDeclarationDeclaration$fToAbstractRHS'AbstractRHS$$fToAbstractRightHandSideAbstractRHS$fToAbstractAbstractRHSRHS$fToAbstractLeftHandSideLHS$fToAbstractClauseClause'$fToAbstractPragma[] MaybeWarningsMaybeWarnings' NoWarnings SomeWarnings ScopeCheck TypeCheck SourceInfosiSource siFileTypesiModule siModuleName sourceInfoincludeStateChangesmergeInterfaceaddImportedThingsapplyFlagsToMaybeWarnings hasWarningsalreadyVisited typeCheckMain getInterface getInterface_ getInterface'checkOptionsCompatibleisCachedgetStoredInterface typeCheckchaseMsghighlightFromInterface readInterfacewriteInterfaceremovePrivatesconcreteOptionsToOptionPragmascreateInterfacegetUniqueMetasRangesgetUnsolvedMetasgetAllUnsolvedgetAllWarningsgetAllWarnings'getMaybeWarningsgetMaybeWarnings'getAllWarningsOfTCErrconstructIScopebuildInterfacegetInterfaceFileHashes moduleHash isNewerThan$fNullMaybeWarnings'$fEqMode $fShowMode$fEqMainInterface$fShowMainInterface$fShowMaybeWarnings'$fFunctorMaybeWarnings'$fFoldableMaybeWarnings'$fTraversableMaybeWarnings'DotMDotState dsModules dsNameSupply dsConnectionModuleIdinitialDotState addModule addConnectiondottify generateDottoAtomschooseHighlightingMethodjsonifyHighlightingInfo$fToJSONTokenBasedlispifyTokenBasedlispifyHighlightingInfoOutputConstraint'OfType'ofNameofExprOutputConstraintOfType CmpInTypeCmpElimJustTypeCmpTypes CmpLevelsCmpTelesJustSortCmpSortsGuard TypedAssignPostponedCheckArgs IsEmptyType SizeLtSatFindInstanceOF PTSInstancePostponedCheckFunDef OutputFormUseForce WithForce WithoutForce ComputeModeDefaultComputeIgnoreAbstractUseShowInstanceRewriteAsIs Instantiated HeadNormal Simplified Normalised parseExpr parseExprIngiveExpr redoChecksgiverefine evalInCurrent evalInMeta normalFormcomputeIgnoreAbstractcomputeWrapInput showComputed outputFormIdreifyElimToExprgetConstraintsgetSolvedInteractionPoints typeOfMetaMI typeOfMeta typeOfMeta'typesOfVisibleMetastypesOfHiddenMetasmetaHelperType contextOfMeta typeInCurrent typeInMetawithInteractionId withMetaId introTactic atTopLevel parseNameisQNamemoduleContentsgetRecordContentsgetModuleContents,$fToConcreteOutputConstraintOutputConstraint$fPrettyOutputConstraint!$fReifyConstraintOutputConstraint $fToConcreteOutputFormOutputForm$fPrettyOutputForm$fReifyProblemConstraintClosure.$fToConcreteOutputConstraint'OutputConstraint'$fPrettyOutputConstraint' $fShowRewrite $fReadRewrite$fShowComputeMode$fReadComputeMode$fEqComputeMode $fEqUseForce$fReadUseForce$fShowUseForce$fFunctorOutputConstraint$fFunctorOutputForm findMentions ClauseZipper CaseContextparseVariablesgetClauseZipperForIPmakeCasemakePatternVarsVisiblemakeAbsurdClausemakeAbstractClause ConversionconvertMOTTOMsConstssMetassEqssCurMeta sMainMetaMapSTModeTMAllHinthintIsConstructor hintQNameinitMapSpopMapStomygetdfvgetMetagetEqscopatternsNotImplementedliteralsNotImplementedhitsNotImplementedtomyIneqfmTypefmExpfmExpsfmLevelicnvh frommyExps abslamvarnamemodifyAbstractExprmodifyAbstractClause constructPats frommyClausecontains_constructornegtypefindClauseDeep matchType$fConversionExceptTExpTerm$fConversionExceptTExpType'$fConversionExceptTAbsAbs$fConversionExceptTMMb$fConversionStateT[]MM$fConversionStateTArg(,)$fConversionStateTTermMM$fConversionStateTType'MM$fConversionStateTArgPat$fConversionStateTClauseMaybe$fConversionStateT[][] $fEqTModeCommandExitCodeContinue ContinueInReturn matchCommand interaction continueAfterwithCurrentFileloadFileshowConstraints showMetas showScope metaParseExpr actOnMetagiveMeta refineMetaretryConstraintsevalInevalTermtypeIn showContext splashScreenhelp AutoResult autoProgress autoMessage AutoProgress Solutions FunClauses RefinementautoIsMainNotMain doCompile setInterfacecurIFcurSigcurMNamecurDefssortDefssigMName compileDirreplconArityAndPars inCompilerEnv$fMonoidIsMain$fSemigroupIsMain $fEqIsMain $fShowIsMainKindOfForeignCodeForeignFileHeaderPragma ForeignImport ForeignOther HaskellPragmaHsDefnHsTypeHsDataHsExport HaskellType HaskellCode parsePragmaparseHaskellPragmagetHaskellPragmasanityCheckPragmagetHaskellConstructorforeignHaskellclassifyForeignclassifyPragmapartitionByKindOfForeignCode$fHasRangeHaskellPragma$fShowHaskellPragma$fEqHaskellPragmacurHsModihnameunqhnametlmodOfxqualxhqnhsNameconhqnbltQualdnamedunamehsPrimOp hsPrimOpApphsInt hsTypedInthsLethsVarUQ hsAppView hsOpToExphsLambdahsMapAlthsMapRHSmazstrmazNamemazMod'mazModmazerror mazCoerceName mazErasedNamemazAnyTypeName mazCoercemazIncompleteMatchrtmIncompleteMatchmazUnreachableErrorrtmUnreachableError mazAnyTypemazRTErtmQualrtmVarrtmErrorunsafeCoerceModfakeDfakeDSfakeDQfakeTypefakeExpfakeDecl emptyBinds isModCharencodeModuleName prettyPrint prettyWhere prettyRhsprettyGuardedRhs prettyQName $fPrettyQOp $fPrettyAlt $fPrettyStmt $fPrettyType$fPrettyTyVarBind$fPrettyDataOrNew $fPrettyBinds $fPrettyPat $fPrettyMatch$fPrettyStrictness$fPrettyConDecl $fPrettyDecl$fPrettyImportSpec$fPrettyImportDecl$fPrettyModulePragmaisMainFunctionhasMainFunctioncheckTypeOfMaintreelessPrimNameimportsForPrimxForPrimprimBody noCheckCoverpconNamebltQual' haskellTypecheckConstructorCounthsTelApproximationhsTelApproximation'$fEqPolyApprox generateLaTeX $fShowKind$fShowAlignmentColumn $fShowOutput $fEqDebug $fShowDebugdefaultCSSFile generateHTMLgenerateHTMLWithPageGen generatePagepage tokenStream RecompileBackend' backendNamebackendVersionoptionscommandLineFlags isEnabled preCompile postCompile preModule postModule compileDefscopeCheckingSuffices callBackendparseBackendOptionsbackendInteraction GiveRefineGiveRefineIntro ElaborateGiveCompilerBackendLaTeX QuickLaTeX OtherBackendParseRemoveKeepIOTCM'IOTCM Interaction'Cmd_load Cmd_compileCmd_constraints Cmd_metas!Cmd_show_module_contents_toplevelCmd_search_about_toplevel Cmd_solveAll Cmd_solveOne Cmd_autoOne Cmd_autoAllCmd_infer_toplevelCmd_compute_toplevelCmd_load_highlighting_infoCmd_tokenHighlighting Cmd_highlightShowImplicitArgsToggleImplicitArgsCmd_give Cmd_refine Cmd_introCmd_refine_or_intro Cmd_contextCmd_helper_function Cmd_infer Cmd_goal_typeCmd_elaborate_giveCmd_goal_type_contextCmd_goal_type_context_inferCmd_goal_type_context_checkCmd_show_module_contents Cmd_make_case Cmd_computeCmd_why_in_scopeCmd_why_in_scope_toplevelCmd_show_version Cmd_abort Interaction CommandQueuecommandsCommand'CommandMOldInteractionScopes CommandStatetheInteractionPointstheCurrentFileoptionsOnReloadoldInteractionScopes commandQueueinitCommandStatelocalStateCommandMliftLocalStaterevLift revLiftTC commandMToIO liftCommandMTliftCommandMTLocalStatemodifyTheInteractionPointsmodifyOldInteractionScopesinsertOldInteractionScoperemoveOldInteractionScopegetOldInteractionScopehandleCommand_ handleCommandrunInteraction maybeAbortinitialiseCommandQueue readsToParseparseToReadsPrecexact readParseparens' independentupdateInteractionPointsAfter interpretinterpretWarningssolveInstantiatedGoals cmd_load'give_gen highlightExprsortInteractionPointsprettyTypeOfMeta prettyContextcmd_helper_functioncmd_goal_type_context_andshowModuleContents searchAboutsetCommandLineOptsstatus displayStatus display_info refreshStr nameModifiersparseAndDoAtToplevel maybeTimedtellToUpdateHighlightingtellEmacsToJumpToError$fReadPosition'$fReadAbsolutePath$fReadInterval' $fReadRange'$fReadInteractionId$fReadCompilerBackend$fShowCompilerBackend$fShowCommand' $fShowRemove $fReadRemove$fEqCompilerBackend$fShowInteraction'$fReadInteraction'$fFunctorInteraction'$fFoldableInteraction'$fTraversableInteraction' $fShowIOTCM' $fReadIOTCM'$fFunctorIOTCM'$fFoldableIOTCM'$fTraversableIOTCM'$fEqGiveRefine$fShowGiveRefinejsonREPL$fToJSONDisplayInfo$fToJSONMakeCaseVariant$fToJSONGiveResult$fToJSONInteractionId$fToJSONStatus mimicGHCi CCContext NameSupplyCCEnv _ccNameSupply _ccContext GHCModuleEnv GHCOptions optGhcCompile optGhcCallGhc optGhcFlags ghcBackend ghcBackend'defaultGHCOptionsghcCommandLineFlags ghcPreCompileghcPostCompile ghcPreModule ghcPostModule ghcCompileDefimports definitionconstructorCoverageCode ccNameSupply ccContext initCCEnv freshNamesintroscheckConstructorType checkCovermkIftermhsCoerce compilePrimalthslitlitqname litqnamepat erasedAritycondeclcompiledcondeclcompiledTypeSynonymtvaldeclinfodeclcopyRTEModules writeModuleoutFile'outFileoutFile_callGHC JSModuleEnv JSOptions optJSCompile jsBackend jsBackend'defaultJSOptionsjsCommandLineFlags jsPreCompile jsPostCompile jsPreModule jsPostModule jsCompileDefprefixjsMod jsFileNamejsMemberglobal'globalreorderreorder'isTopLevelValue isEmptyObject insertAfter curModulecheckCompilerPragmasdefJSDef definition' compileTerm compileTerm' compileAlt visitorNameflatNamelocal primitivesbuiltinBackendsrunAgdarunAgda'defaultInteractionrunAgdaWithOptions printUsage backendUsage printVersion optionErrorrunTCMPrettyErrorsmainghc-prim GHC.TypesBool integer-gmpGHC.Integer.Type Data.EithereitherEitherTrueRightLeft GHC.MaybeGHC.Num+Functor4unordered-containers-0.2.10.0-LgoTL3wbBEY5bZIDJiyxW4Data.HashMap.BaseHashMapData.HashSet.BasekeysSetData.HashMap.Strict.Base fromListWithintersectionWithKeyintersectionWithdifferenceWithtraverseWithKeymapMaybeWithKey unionWithKeyalterFalter filterWithKey foldrWithKeyfoldr foldlWithKey'foldl' lookupDefaultGHC.IO.ExceptionGHC.IOcatchconvertLineEndings GHC.IORefIORef Data.IORefatomicWriteIORefatomicModifyIORef'atomicModifyIORef modifyIORef' modifyIORef mkWeakIORef writeIORef readIORefnewIORefBelowAboveGHC.ListControl.Monad.Reader.Class MonadReaderwarningNameDescription HelpTopic readP_to_S readS_to_POrdering GHC.ClassesOrdGHC.ShowShowshowDocsPGFalseContPospgparserdocsstarDocs prettyKey memoiseDocssingletonOrEveryPrefixinitlastEq Data.OldListgroupBy==.sortBycomparezipWith System.IOputStrLn GenericLineHeaderContentfName fOptionalfParsefSetgeHeader geContent GenericFileP agdaLibFieldsFilePathparseLib fromGeneric fromGeneric' checkFields findField parseGeneric parseLine groupLines GenericEntry stripCommentsdisplayInBufferrunningInfoBufferName dropWhilerootNamedirectory-1.3.3.0System.DirectorycanonicalizePath doesFileExist text-1.2.3.1Data.Text.Internal.LazyTextmkLayersbleachisBlankbreak1getLine emptyLiteraterexunP<=GHC.EnummaxBoundfmapreachableFromInternal Data.Foldablefoldr1orall&&anymapM MonadicFixPol plusFixities declaredNamesmempty mergeAspectsMonoid-geniplate-mirror-0.7.6-EIfUrB4KSUw39sxaK8HtlFData.Generics.GeniplateinstanceUniverseBiT universeBiinstanceTransformBiMT transformBiM TransposetoBoundsinfSizelengthblowUpSparseVecunionAssocWithcollapseokMmaxOminOmappendcombineNewOldCallGraphlitError stringToken lexString lexStringGaplexChar lexEscapereadNum readNumAccsillyEscapeCharspragmafpragmaalexScanGHC.Err undefinedAttr attrRangeattrNametheAttr happyErrortakeOptionsPragmasfigureOutTopLevelModulemkQName pragmaQNameisNameforallPiaddType buildDoStmtverifyImportDirectivevalidHaskellModuleName exprToLHS exprToPattern exprToName toAttribute applyAttr applyAttrscheckForUniqueAttributeerrorConflictingAttributeerrorConflictingAttributesHappyStk returnEOFskipTo qualified getOffside occurrenceFVflexible irrelevantlyfreeIn'ChangeT evalUpdater MakePrivate MakeAbstractNiceEnv _loneSigs_termChk_posChk_uniChk _catchallniceWarn DataRecOrFunDataNameRecNameFunNameInMutual NotInMutual KindOfBlockPostulateBlockPrimitiveBlock InstanceBlock FieldBlock DataBlockcombineTermChecks initNiceEnvloneSigs addLoneSig removeLoneSiggetSig noLoneSigs checkLoneSigsterminationCheckPragmapositivityCheckPragmauniverseCheckPragmagetUniverseCheckFromSigcatchallPragmapopCatchallPragma niceWarning replaceSigs NiceWarnings withCommentswithoutCommentsparseLiterateFileFreeT fcIgnoreSorts fcContext subtractFV getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName LibErrorIOLibError LibError' LibNotFound AmbiguousLib OtherErrorlfPathlfExistsmkLibM getAgdaAppDirdefaultLibraryFiles defaultsFilefindAgdaLibFilesreadDefaultsFilegetLibrariesFile parseLibFilesstripCommentLinesfindLibhasMatchformatLibError CopyDirActionMkDirCopyFile performActioncopyDirContentDryRun copyIfChangeddefaultLaTeXDirdefaultHTMLDirdeadPragmaOptionsControl.Monad.State.Class MonadStateControl.Monad.Trans.State.LazyStateTControl.Monad.Trans.ReaderReaderT)hashtables-1.2.3.1-DPxy6XvqCFx66WWUlsjclfData.HashTable.IOCuckooHashTableBasicHashTableLinearHashTable benchmarkingmatchLeq inequalities withNames' splitAlts modifyCounter icodeFileModSynEqMinequalifEqualcyclicrecDef takenVarNames takenDefNamesbuiltins preserveIIds addBinding isBuiltinFununsafeQNameToNamelookupNameInScopehasConcreteNamespickConcreteNameshadowingNames chooseNamebracket'bracket bracketP_isLambda withInfixDeclwithAbstractPrivatebindToConcreteCtx toConcreteTopbindToConcreteToptoConcreteHidingbindToConcreteHidingtryToRecoverPatternSyntryToRecoverPatternSynPrecoverPatternSyn recoverOpApp BlankVarsnappsappsnelimsisSelfelimsreifyDisplayFormreifyDisplayFormPnameFirstIfHiddenstripImplicitstryRecPFromConP RecordTreeLeafRecConVarPatDotPatKindRecPatMDropFromRecordSplitTreeRecordSplitNodesplitTag splitAritysplitRecordPattern conjColumns insertColumn cutSublistrecordExpressionsToCopatternsreplaceByProjections isRecordCaserecordSplitTree runRecPatMnextVar projections removeTreetranslatePattern recordTree translateTelData.Sequence.Internal MatchResultSplitAssignmentmapBlockingVarConsmapBlockingVarLitszipBlockingVarschoiceBlockedOnResult matchClause matchPatscombinematchPatinlineWithClauses'withExprClausesinlinedClausesinline IndefinitedropTopLevelModule'topLevelModuleDropper prettyInEqualpruneUnreachable pruneIntCaseinitialInstanceCandidates findInstance'insidePifilterResetingStatecheckCandidatesapplyDroppingParameters NameKindstokenHighlighting nameKindsgenerateConstructorInfoterminationErrorHighlightingpositivityErrorHighlightinggenerate nameToFile nameToFileA getVarType getEqualitygetEqualityUnraisedaddEqssolveVarsolveEq simplifyEqisHom fullyApplyCon checkArgInfocheckRelevanceinferDef inferDef' inferSpine inferSpine'shouldBeProjectiblemetaTypesubtype eliminate checkSpine checkArgs ControlFrameCaseKArgK NormaliseKForceKEraseKNatSucKPrimOpK UpdateThunkApplyK SpineContextCatchAll MatchStack ControlStackAMEval GHC.STRefSTRefIsValueThunkPointerPure BlackHoleSpineFastCompiledClausesFCaseFEtaFDoneFFail fprojPatterns fconBranches flitBranchesfcatchAllBranch ffallThroughCForceCEraseCTyConCAxiomCPrimOpCOther compactDef CompactDefclApplyclApply_ derefPointer_unsafeDerefPointer createThunk pureThunk lookupEnv_topMetaIsNotBlocked decodeSpineGHC.STunsafeInterleaveST decodeEnv decodeClosure elimsToSpinetrimEnvironmentbuildEnvreduceTm BuiltinEnv:>>:createMetasAndTypeCheck withGenRecVarcomputeGeneralizationpruneUnsolvedMetas unpackSubbuildGeneralizeTelcreateGenValuescreateGenValue sortMetascreateGenRecordTypefillInGenRecordDetailsflexiblePatternsupdateProblemEqsisSolvedProblemproblemAllVariablesnoShadowingOfConstructorscheckDotPatterngetLeftoverPatternsgetUserVariableNamestransferOriginscomputeLHSContextrecheckStrippedWithPattern splitStrategycheckLHSnoPatternMatchingOnCodata suspendErrors softTypeError hardTypeErrordisambiguateProjectiondisambiguateConstructorcheckConstructorParameterscheckParametersinductiveCheckcheckBuiltinBoolbindBuiltinDatabindBuiltinEqualityAllowPartialCover FixTarget coverPatternscovercreateMissingHCompClauseinferMissingClausecomputeNeighbourhoodsplitlookupPatternVarsplit'splitResultPathsplitResultRecordcomputeHCompSplit YesFixTarget FailBecause&inferOrCheckProjAppToKnownPrincipalArgcheckConstructorApplication MaybeRanges inferHeadcheckRelevance'checkHeadApplicationcoerce'checkArgumentsE inferProjAppinferOrCheckProjApp checkProjApppathAbs checkPrimCompcheckPrimHCompcheckPrimTrans check_gluecheckArgumentsE'ccCxt ccCatchAllgetCompiledClauses cacheTreeless lookupLevel casetreeTopwithContextSize lambdasUpTo replaceVarmkRecord substTermStripAllProjections ExtractCallsCalls termDecl' termMutual'terminationError reportCalls termFunction typeEndsInDeftermDeftermTypesetMasks targetElem termToDBPmaskNonDataArgs termClause constructor withFunctionfunction maskSizeLtannotatePatsWithUseSizeLt compareElim compareProjmakeCMaddGuardednesscomposeGuardednessoffsetFromConstructor subPatternsreduceConPatternsubTerm compareVarVarAlphapatsPEPaththePath groupClauses pathToRecord groupPathesPatternCheckConfigtopNameconNamesfldNamesParsers billToParsergetDefinedNames localNames buildParserspatternAppViewparsePat parseLHS'classifyPatternvalidConPatternqualifierModulesWithRHS' rhsRewriteEqn rhsWithExpr rhsSubclausesLivesInCurrentModuleEnsureNoLetStms ResolveQNamenoDotorEqPattern noDotPatternrecordConstructorTypecheckModuleMacronotPublicWithoutOpen renamingRange checkOpen toAbstractCtxlocalToAbstract'bindPatternVariable mkNamedArgmkArg'mkArg toAbstractDot toAbstractLamscopeCheckExtendedLamscopeCheckNiceModuletelHasOpenStmsOrModuleMacrosscopeCheckModule niceDeclsbindGeneralizablesIfInserted applyAPatterntoAbstractOpArgtoAbstractOpApp showAspectsgetEqCombinatorsgenericNotEnough codeBlockcolumncolumns columnsPrevnextId usedColumns countClustersAlignmentColumncolumnCodeBlock columnColumn columnKindIndentationColumnId Indentation AlignmentOutput MaybeColumn agdaSpacedebugsrunLaTeXisSpacesisSpaceNotNewline replaceSpacesmoveColumnForToken resetColumnregisterColumn useColumn columnZeroregisterColumnZero enterCode leaveCode columnNameptOpen'ptOpenptOpenBeginningOfLine ptOpenIndent processMarkupprocessComment processCodespaces stringLiteraltoLaTeX emptyState processTokens TokenInfoPageGen rstDelimiterhighlightOnlyCodehighlightedFileExt modToFile!! otherBackendsControl.Monad.Trans.ClassControl.Monad.IO.ClassliftIO Text.ReadreadsjsonifyResponseformatWarningsAndErrorslispifyResponselastTag showNumIId