rewrite {take,drop}_arg_types to avoid use of equality proofs
[coq-hetmet.git] / examples / x
1 [3 of 3] Compiling Main             ( Demo.hs, .build/Main.o )
2
3 ==================== Desugared, before opt ====================
4 @ co_aLI::() ~ ()
5 co_aLI = TYPE ()
6
7 @ co_aHe::GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ ~ ()
8 co_aHe = TYPE trans GArrowTikZ.TFCo:R:GArrowUnitGArrowTikZ co_aLI
9
10 Rec {
11 $dGArrowSTKC_aHd
12   :: GHC.HetMet.GArrow.GArrowSTKC GArrowTikZ.GArrowTikZ
13 [LclId]
14 $dGArrowSTKC_aHd = GArrowTikZ.$fGArrowSTKCGArrowTikZ
15
16 Main.foo
17   :: forall (t_aD6 :: * -> * -> *) t_aD7.
18      <[t_aD7]>@t_aD6 -> <[t_aD7]>@t_aD6
19 [LclId]
20 Main.foo =
21   \ (@ t_aD6::* -> * -> *) (@ t_aD7) ->
22     letrec {
23       foo_aD5 :: <[t_aD7]>@t_aD6 -> <[t_aD7]>@t_aD6
24       [LclId]
25       foo_aD5 =
26         \ (x_aD4 :: <[t_aD7]>@t_aD6) ->
27           GHC.HetMet.CodeTypes.hetmet_brak
28             @ t_aD6
29             @ t_aD7
30             ((GHC.HetMet.CodeTypes.hetmet_esc @ t_aD6 @ t_aD7 x_aD4)
31              `cast` (t_aD7 :: t_aD7 ~ t_aD7)); } in
32     foo_aD5
33
34 Main.foo'
35   :: forall (g_aFo :: * -> * -> *) y_aFp.
36      (GHC.HetMet.GArrow.GArrowSTKC g_aFo,
37       GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()) =>
38      GHC.HetMet.Private.PGArrow g_aFo () y_aFp -> g_aFo () y_aFp
39 [LclId]
40 Main.foo' =
41   \ (@ g_aFo::* -> * -> *)
42     (@ y_aFp)
43     ($dGArrowSTKC_aFq :: GHC.HetMet.GArrow.GArrowSTKC g_aFo)
44     (@ co_aFr::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()) ->
45     let {
46       @ co_aMM::GHC.HetMet.GArrow.GArrowTensor g_aFo
47                   ~
48                 GHC.HetMet.GArrow.GArrowTensor g_aFo
49       co_aMM = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
50     let {
51       @ co_aML::GHC.HetMet.GArrow.GArrowTensor g_aFo
52                   ~
53                 GHC.HetMet.GArrow.GArrowTensor g_aFo
54       co_aML = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
55     let {
56       @ co_aMK::() ~ ()
57       co_aMK = TYPE () } in
58     let {
59       @ co_aMJ::() ~ ()
60       co_aMJ = TYPE () } in
61     let {
62       @ co_aMI::GHC.HetMet.GArrow.GArrowTensor g_aFo
63                   ~
64                 GHC.HetMet.GArrow.GArrowTensor g_aFo
65       co_aMI = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
66     let {
67       @ co_aMH::GHC.HetMet.GArrow.GArrowTensor g_aFo
68                   ~
69                 GHC.HetMet.GArrow.GArrowTensor g_aFo
70       co_aMH = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
71     let {
72       @ co_aMG::() ~ ()
73       co_aMG = TYPE () } in
74     let {
75       @ co_aMF::() ~ ()
76       co_aMF = TYPE () } in
77     let {
78       @ co_aME::GHC.HetMet.GArrow.GArrowTensor g_aFo
79                   ~
80                 GHC.HetMet.GArrow.GArrowTensor g_aFo
81       co_aME = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
82     let {
83       @ co_aMD::GHC.HetMet.GArrow.GArrowTensor g_aFo
84                   ~
85                 GHC.HetMet.GArrow.GArrowTensor g_aFo
86       co_aMD = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
87     let {
88       @ co_aMC::() ~ ()
89       co_aMC = TYPE () } in
90     let {
91       @ co_aMB::() ~ ()
92       co_aMB = TYPE () } in
93     let {
94       @ co_aMz::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
95       co_aMz = TYPE trans co_aFr (sym co_aMB) } in
96     let {
97       @ co_aMu::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
98       co_aMu = TYPE trans co_aFr (sym co_aMF) } in
99     let {
100       @ co_aMp::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
101       co_aMp = TYPE trans co_aFr (sym co_aMJ) } in
102     let {
103       @ co_aM1::GHC.HetMet.GArrow.GArrowUnit g_aFo
104                   ~
105                 GHC.HetMet.GArrow.GArrowUnit g_aFo
106       co_aM1 = TYPE GHC.HetMet.GArrow.GArrowUnit g_aFo } in
107     let {
108       @ co_aM4::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
109       co_aM4 = TYPE trans (sym co_aM1) co_aFr } in
110     let {
111       @ co_aLZ::GHC.HetMet.GArrow.GArrowTensor g_aFo
112                   ~
113                 GHC.HetMet.GArrow.GArrowTensor g_aFo
114       co_aLZ = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
115     let {
116       @ co_aMn::GHC.HetMet.GArrow.GArrowTensor g_aFo
117                   ~
118                 GHC.HetMet.GArrow.GArrowTensor g_aFo
119       co_aMn = TYPE trans co_aLZ (sym co_aML) } in
120     let {
121       @ co_aMs::GHC.HetMet.GArrow.GArrowTensor g_aFo
122                   ~
123                 GHC.HetMet.GArrow.GArrowTensor g_aFo
124       co_aMs = TYPE trans co_aLZ (sym co_aMH) } in
125     let {
126       @ co_aMx::GHC.HetMet.GArrow.GArrowTensor g_aFo
127                   ~
128                 GHC.HetMet.GArrow.GArrowTensor g_aFo
129       co_aMx = TYPE trans co_aLZ (sym co_aMD) } in
130     let {
131       @ co_aLV::GHC.HetMet.GArrow.GArrowUnit g_aFo
132                   ~
133                 GHC.HetMet.GArrow.GArrowUnit g_aFo
134       co_aLV = TYPE GHC.HetMet.GArrow.GArrowUnit g_aFo } in
135     let {
136       @ co_aM5::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
137       co_aM5 = TYPE trans (sym co_aLV) co_aFr } in
138     let {
139       @ co_aLT::GHC.HetMet.GArrow.GArrowTensor g_aFo
140                   ~
141                 GHC.HetMet.GArrow.GArrowTensor g_aFo
142       co_aLT = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
143     let {
144       @ co_aM6::GHC.HetMet.GArrow.GArrowTensor g_aFo
145                   ~
146                 GHC.HetMet.GArrow.GArrowTensor g_aFo
147       co_aM6 = TYPE trans (sym co_aLT) co_aLZ } in
148     let {
149       @ co_aLP::GHC.HetMet.GArrow.GArrowUnit g_aFo
150                   ~
151                 GHC.HetMet.GArrow.GArrowUnit g_aFo
152       co_aLP = TYPE GHC.HetMet.GArrow.GArrowUnit g_aFo } in
153     let {
154       @ co_aM7::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
155       co_aM7 = TYPE trans (sym co_aLP) co_aFr } in
156     let {
157       @ co_aLN::GHC.HetMet.GArrow.GArrowTensor g_aFo
158                   ~
159                 GHC.HetMet.GArrow.GArrowTensor g_aFo
160       co_aLN = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
161     let {
162       @ co_aM8::GHC.HetMet.GArrow.GArrowTensor g_aFo
163                   ~
164                 GHC.HetMet.GArrow.GArrowTensor g_aFo
165       co_aM8 = TYPE trans (sym co_aLN) co_aLZ } in
166     let {
167       $dGArrowSwap_aLL
168         :: GHC.HetMet.GArrow.GArrowSwap
169              g_aFo
170              (GHC.HetMet.GArrow.GArrowTensor g_aFo)
171              (GHC.HetMet.GArrow.GArrowUnit g_aFo)
172       [LclId]
173       $dGArrowSwap_aLL =
174         GHC.HetMet.GArrow.$p3GArrowSTKC @ g_aFo $dGArrowSTKC_aFq } in
175     let {
176       $dGArrow_aM2
177         :: GHC.HetMet.GArrow.GArrow
178              g_aFo
179              (GHC.HetMet.GArrow.GArrowTensor g_aFo)
180              (GHC.HetMet.GArrow.GArrowUnit g_aFo)
181       [LclId]
182       $dGArrow_aM2 =
183         GHC.HetMet.GArrow.$p1GArrowSwap
184           @ g_aFo
185           @ (GHC.HetMet.GArrow.GArrowTensor g_aFo)
186           @ (GHC.HetMet.GArrow.GArrowUnit g_aFo)
187           $dGArrowSwap_aLL } in
188     let {
189       $dCategory_aM3 :: Control.Category.Category g_aFo
190       [LclId]
191       $dCategory_aM3 =
192         GHC.HetMet.GArrow.$p1GArrow
193           @ g_aFo
194           @ (GHC.HetMet.GArrow.GArrowTensor g_aFo)
195           @ (GHC.HetMet.GArrow.GArrowUnit g_aFo)
196           $dGArrow_aM2 } in
197     let {
198       $dGArrow_aMa
199         :: GHC.HetMet.GArrow.GArrow
200              g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
201       [LclId]
202       $dGArrow_aMa =
203         $dGArrow_aM2
204         `cast` (GHC.HetMet.GArrow.T:GArrow
205                   g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) co_aM4
206                 :: GHC.HetMet.GArrow.T:GArrow
207                      g_aFo
208                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
209                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)
210                      ~
211                    GHC.HetMet.GArrow.T:GArrow
212                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()) } in
213     let {
214       $dGArrowSwap_aM9
215         :: GHC.HetMet.GArrow.GArrowSwap
216              g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
217       [LclId]
218       $dGArrowSwap_aM9 =
219         $dGArrowSwap_aLL
220         `cast` (GHC.HetMet.GArrow.T:GArrowSwap
221                   g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) co_aM4
222                 :: GHC.HetMet.GArrow.T:GArrowSwap
223                      g_aFo
224                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
225                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)
226                      ~
227                    GHC.HetMet.GArrow.T:GArrowSwap
228                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()) } in
229     let {
230       $dGArrowCopy_aLK
231         :: GHC.HetMet.GArrow.GArrowCopy
232              g_aFo
233              (GHC.HetMet.GArrow.GArrowTensor g_aFo)
234              (GHC.HetMet.GArrow.GArrowUnit g_aFo)
235       [LclId]
236       $dGArrowCopy_aLK =
237         GHC.HetMet.GArrow.$p2GArrowSTKC @ g_aFo $dGArrowSTKC_aFq } in
238     let {
239       $dGArrow_aLW
240         :: GHC.HetMet.GArrow.GArrow
241              g_aFo
242              (GHC.HetMet.GArrow.GArrowTensor g_aFo)
243              (GHC.HetMet.GArrow.GArrowUnit g_aFo)
244       [LclId]
245       $dGArrow_aLW =
246         GHC.HetMet.GArrow.$p1GArrowCopy
247           @ g_aFo
248           @ (GHC.HetMet.GArrow.GArrowTensor g_aFo)
249           @ (GHC.HetMet.GArrow.GArrowUnit g_aFo)
250           $dGArrowCopy_aLK } in
251     let {
252       $dCategory_aLX :: Control.Category.Category g_aFo
253       [LclId]
254       $dCategory_aLX =
255         GHC.HetMet.GArrow.$p1GArrow
256           @ g_aFo
257           @ (GHC.HetMet.GArrow.GArrowTensor g_aFo)
258           @ (GHC.HetMet.GArrow.GArrowUnit g_aFo)
259           $dGArrow_aLW } in
260     let {
261       $dGArrow_aMd
262         :: GHC.HetMet.GArrow.GArrow
263              g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
264       [LclId]
265       $dGArrow_aMd =
266         $dGArrow_aLW
267         `cast` (GHC.HetMet.GArrow.T:GArrow
268                   g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) co_aM5
269                 :: GHC.HetMet.GArrow.T:GArrow
270                      g_aFo
271                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
272                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)
273                      ~
274                    GHC.HetMet.GArrow.T:GArrow
275                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()) } in
276     let {
277       $dGArrow_aMe
278         :: GHC.HetMet.GArrow.GArrow
279              g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
280       [LclId]
281       $dGArrow_aMe =
282         $dGArrow_aMd
283         `cast` (GHC.HetMet.GArrow.T:GArrow g_aFo co_aM6 ()
284                 :: GHC.HetMet.GArrow.T:GArrow
285                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
286                      ~
287                    GHC.HetMet.GArrow.T:GArrow
288                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()) } in
289     let {
290       $dGArrowCopy_aMb
291         :: GHC.HetMet.GArrow.GArrowCopy
292              g_aFo
293              (GHC.HetMet.GArrow.GArrowTensor g_aFo)
294              (GHC.HetMet.GArrow.GArrowUnit g_aFo)
295       [LclId]
296       $dGArrowCopy_aMb =
297         $dGArrowCopy_aLK
298         `cast` (GHC.HetMet.GArrow.T:GArrowCopy
299                   g_aFo co_aM6 (GHC.HetMet.GArrow.GArrowUnit g_aFo)
300                 :: GHC.HetMet.GArrow.T:GArrowCopy
301                      g_aFo
302                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
303                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)
304                      ~
305                    GHC.HetMet.GArrow.T:GArrowCopy
306                      g_aFo
307                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
308                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)) } in
309     let {
310       $dGArrowCopy_aMc
311         :: GHC.HetMet.GArrow.GArrowCopy
312              g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
313       [LclId]
314       $dGArrowCopy_aMc =
315         $dGArrowCopy_aMb
316         `cast` (GHC.HetMet.GArrow.T:GArrowCopy
317                   g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) co_aM5
318                 :: GHC.HetMet.GArrow.T:GArrowCopy
319                      g_aFo
320                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
321                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)
322                      ~
323                    GHC.HetMet.GArrow.T:GArrowCopy
324                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()) } in
325     let {
326       $dGArrowDrop_aLJ
327         :: GHC.HetMet.GArrow.GArrowDrop
328              g_aFo
329              (GHC.HetMet.GArrow.GArrowTensor g_aFo)
330              (GHC.HetMet.GArrow.GArrowUnit g_aFo)
331       [LclId]
332       $dGArrowDrop_aLJ =
333         GHC.HetMet.GArrow.$p1GArrowSTKC @ g_aFo $dGArrowSTKC_aFq } in
334     let {
335       $dGArrow_aLQ
336         :: GHC.HetMet.GArrow.GArrow
337              g_aFo
338              (GHC.HetMet.GArrow.GArrowTensor g_aFo)
339              (GHC.HetMet.GArrow.GArrowUnit g_aFo)
340       [LclId]
341       $dGArrow_aLQ =
342         GHC.HetMet.GArrow.$p1GArrowDrop
343           @ g_aFo
344           @ (GHC.HetMet.GArrow.GArrowTensor g_aFo)
345           @ (GHC.HetMet.GArrow.GArrowUnit g_aFo)
346           $dGArrowDrop_aLJ } in
347     let {
348       $dCategory_aLR :: Control.Category.Category g_aFo
349       [LclId]
350       $dCategory_aLR =
351         GHC.HetMet.GArrow.$p1GArrow
352           @ g_aFo
353           @ (GHC.HetMet.GArrow.GArrowTensor g_aFo)
354           @ (GHC.HetMet.GArrow.GArrowUnit g_aFo)
355           $dGArrow_aLQ } in
356     let {
357       $dGArrow_aMh
358         :: GHC.HetMet.GArrow.GArrow
359              g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
360       [LclId]
361       $dGArrow_aMh =
362         $dGArrow_aLQ
363         `cast` (GHC.HetMet.GArrow.T:GArrow
364                   g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) co_aM7
365                 :: GHC.HetMet.GArrow.T:GArrow
366                      g_aFo
367                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
368                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)
369                      ~
370                    GHC.HetMet.GArrow.T:GArrow
371                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()) } in
372     let {
373       $dGArrow_aMi
374         :: GHC.HetMet.GArrow.GArrow
375              g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
376       [LclId]
377       $dGArrow_aMi =
378         $dGArrow_aMh
379         `cast` (GHC.HetMet.GArrow.T:GArrow g_aFo co_aM8 ()
380                 :: GHC.HetMet.GArrow.T:GArrow
381                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
382                      ~
383                    GHC.HetMet.GArrow.T:GArrow
384                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()) } in
385     let {
386       $dGArrowDrop_aMf
387         :: GHC.HetMet.GArrow.GArrowDrop
388              g_aFo
389              (GHC.HetMet.GArrow.GArrowTensor g_aFo)
390              (GHC.HetMet.GArrow.GArrowUnit g_aFo)
391       [LclId]
392       $dGArrowDrop_aMf =
393         $dGArrowDrop_aLJ
394         `cast` (GHC.HetMet.GArrow.T:GArrowDrop
395                   g_aFo co_aM8 (GHC.HetMet.GArrow.GArrowUnit g_aFo)
396                 :: GHC.HetMet.GArrow.T:GArrowDrop
397                      g_aFo
398                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
399                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)
400                      ~
401                    GHC.HetMet.GArrow.T:GArrowDrop
402                      g_aFo
403                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
404                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)) } in
405     let {
406       $dGArrowDrop_aMg
407         :: GHC.HetMet.GArrow.GArrowDrop
408              g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()
409       [LclId]
410       $dGArrowDrop_aMg =
411         $dGArrowDrop_aMf
412         `cast` (GHC.HetMet.GArrow.T:GArrowDrop
413                   g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) co_aM7
414                 :: GHC.HetMet.GArrow.T:GArrowDrop
415                      g_aFo
416                      (GHC.HetMet.GArrow.GArrowTensor g_aFo)
417                      (GHC.HetMet.GArrow.GArrowUnit g_aFo)
418                      ~
419                    GHC.HetMet.GArrow.T:GArrowDrop
420                      g_aFo (GHC.HetMet.GArrow.GArrowTensor g_aFo) ()) } in
421     let {
422       @ co_aF3::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
423       co_aF3 = TYPE co_aFr } in
424     let {
425       @ co_aEX::() ~ ()
426       co_aEX = TYPE () } in
427     let {
428       @ co_aEI::GHC.HetMet.GArrow.GArrowTensor g_aFo
429                   ~
430                 GHC.HetMet.GArrow.GArrowTensor g_aFo
431       co_aEI = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
432     let {
433       @ co_aEG::GHC.HetMet.GArrow.GArrowTensor g_aFo
434                   ~
435                 GHC.HetMet.GArrow.GArrowTensor g_aFo
436       co_aEG = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
437     let {
438       @ co_aEF::GHC.HetMet.GArrow.GArrowTensor g_aFo
439                   ~
440                 GHC.HetMet.GArrow.GArrowTensor g_aFo
441       co_aEF = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
442     let {
443       @ co_aEE::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
444       co_aEE =
445         TYPE trans
446                (trans (GHC.HetMet.GArrow.GArrowUnit g_aFo) co_aF3)
447                (sym co_aEX) } in
448     let {
449       @ co_aEz::() ~ ()
450       co_aEz = TYPE () } in
451     let {
452       @ co_aF0::() ~ ()
453       co_aF0 = TYPE trans co_aEz co_aEX } in
454     let {
455       @ co_aEy::() ~ ()
456       co_aEy = TYPE () } in
457     let {
458       @ co_aEx::GHC.HetMet.GArrow.GArrowTensor g_aFo
459                   ~
460                 GHC.HetMet.GArrow.GArrowTensor g_aFo
461       co_aEx =
462         TYPE trans
463                (trans (GHC.HetMet.GArrow.GArrowTensor g_aFo) co_aEI)
464                (sym co_aEG) } in
465     let {
466       @ co_aEw::GHC.HetMet.GArrow.GArrowTensor g_aFo
467                   ~
468                 GHC.HetMet.GArrow.GArrowTensor g_aFo
469       co_aEw = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
470     let {
471       @ co_aEH::GHC.HetMet.GArrow.GArrowTensor g_aFo
472                   ~
473                 GHC.HetMet.GArrow.GArrowTensor g_aFo
474       co_aEH = TYPE trans co_aEw co_aEG } in
475     let {
476       @ co_aEv::GHC.HetMet.GArrow.GArrowTensor g_aFo
477                   ~
478                 GHC.HetMet.GArrow.GArrowTensor g_aFo
479       co_aEv = TYPE GHC.HetMet.GArrow.GArrowTensor g_aFo } in
480     let {
481       @ co_aEu::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
482       co_aEu =
483         TYPE trans
484                (trans (GHC.HetMet.GArrow.GArrowUnit g_aFo) co_aEE)
485                (sym co_aEz) } in
486     let {
487       @ co_aEq::() ~ ()
488       co_aEq = TYPE () } in
489     let {
490       @ co_aEC::() ~ ()
491       co_aEC = TYPE trans co_aEq co_aEz } in
492     let {
493       @ co_aEZ::() ~ ()
494       co_aEZ = TYPE trans co_aEC co_aEX } in
495     let {
496       @ co_aEp::() ~ ()
497       co_aEp = TYPE () } in
498     let {
499       @ co_aEo::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
500       co_aEo =
501         TYPE trans
502                (trans (GHC.HetMet.GArrow.GArrowUnit g_aFo) co_aEu)
503                (sym co_aEq) } in
504     let {
505       @ co_aEl::() ~ ()
506       co_aEl = TYPE () } in
507     let {
508       @ co_aEs::() ~ ()
509       co_aEs = TYPE trans co_aEl co_aEq } in
510     let {
511       @ co_aED::() ~ ()
512       co_aED = TYPE trans co_aEs co_aEz } in
513     let {
514       @ co_aF1::() ~ ()
515       co_aF1 = TYPE trans co_aED co_aEX } in
516     let {
517       @ co_aEk::() ~ ()
518       co_aEk = TYPE () } in
519     let {
520       @ co_aEj::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
521       co_aEj =
522         TYPE trans
523                (trans (GHC.HetMet.GArrow.GArrowUnit g_aFo) co_aEo)
524                (sym co_aEl) } in
525     let {
526       @ co_aEh::() ~ ()
527       co_aEh = TYPE () } in
528     let {
529       @ co_aEn::() ~ ()
530       co_aEn = TYPE trans co_aEh co_aEl } in
531     let {
532       @ co_aEr::() ~ ()
533       co_aEr = TYPE trans co_aEn co_aEq } in
534     let {
535       @ co_aEA::() ~ ()
536       co_aEA = TYPE trans co_aEr co_aEz } in
537     let {
538       @ co_aEY::() ~ ()
539       co_aEY = TYPE trans co_aEA co_aEX } in
540     let {
541       @ co_aEg::() ~ ()
542       co_aEg = TYPE () } in
543     let {
544       @ co_aEf::GHC.HetMet.Private.PGArrow g_aFo () y_aFp
545                   ~
546                 GHC.HetMet.Private.PGArrow g_aFo () y_aFp
547       co_aEf = TYPE GHC.HetMet.Private.PGArrow g_aFo () y_aFp } in
548     let {
549       @ co_aEi::GHC.HetMet.Private.PGArrow g_aFo () y_aFp
550                   ~
551                 GHC.HetMet.Private.PGArrow g_aFo () y_aFp
552       co_aEi =
553         TYPE trans
554                co_aEf (GHC.HetMet.Private.PGArrow g_aFo co_aEh y_aFp) } in
555     let {
556       @ co_aEm::GHC.HetMet.Private.PGArrow g_aFo () y_aFp
557                   ~
558                 GHC.HetMet.Private.PGArrow g_aFo () y_aFp
559       co_aEm =
560         TYPE trans
561                co_aEi (GHC.HetMet.Private.PGArrow g_aFo co_aEl y_aFp) } in
562     let {
563       @ co_aEt::GHC.HetMet.Private.PGArrow g_aFo () y_aFp
564                   ~
565                 GHC.HetMet.Private.PGArrow g_aFo () y_aFp
566       co_aEt =
567         TYPE trans
568                co_aEm (GHC.HetMet.Private.PGArrow g_aFo co_aEq y_aFp) } in
569     let {
570       @ co_aEB::GHC.HetMet.Private.PGArrow g_aFo () y_aFp
571                   ~
572                 GHC.HetMet.Private.PGArrow g_aFo () y_aFp
573       co_aEB =
574         TYPE trans
575                co_aEt (GHC.HetMet.Private.PGArrow g_aFo co_aEz y_aFp) } in
576     let {
577       @ co_aF2::GHC.HetMet.Private.PGArrow g_aFo () y_aFp
578                   ~
579                 GHC.HetMet.Private.PGArrow g_aFo () y_aFp
580       co_aF2 =
581         TYPE trans
582                co_aEB (GHC.HetMet.Private.PGArrow g_aFo co_aEX y_aFp) } in
583     let {
584       @ co_aEd::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
585       co_aEd = TYPE trans co_aEj (sym co_aEk) } in
586     let {
587       @ co_aEb::GHC.HetMet.GArrow.GArrowTensor g_aFo
588                   ~
589                 GHC.HetMet.GArrow.GArrowTensor g_aFo
590       co_aEb =
591         TYPE trans
592                (trans (GHC.HetMet.GArrow.GArrowTensor g_aFo) co_aEx)
593                (sym co_aEw) } in
594     let {
595       @ co_aE8::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
596       co_aE8 = TYPE trans co_aEo (sym co_aEp) } in
597     let {
598       @ co_aE6::GHC.HetMet.GArrow.GArrowTensor g_aFo
599                   ~
600                 GHC.HetMet.GArrow.GArrowTensor g_aFo
601       co_aE6 = TYPE trans co_aEb (sym co_aEv) } in
602     let {
603       @ co_aE3::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
604       co_aE3 = TYPE trans co_aEu (sym co_aEy) } in
605     let {
606       @ co_aE1::GHC.HetMet.GArrow.GArrowTensor g_aFo
607                   ~
608                 GHC.HetMet.GArrow.GArrowTensor g_aFo
609       co_aE1 = TYPE trans co_aEx (sym co_aEF) } in
610     let {
611       @ co_aDD::GHC.HetMet.Private.PGArrow g_aFo () y_aFp
612                   ~
613                 GHC.HetMet.Private.PGArrow g_aFo () y_aFp
614       co_aDD = TYPE GHC.HetMet.Private.PGArrow g_aFo () y_aFp } in
615     let {
616       @ co_aDC::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
617       co_aDC =
618         TYPE trans
619                (trans (GHC.HetMet.GArrow.GArrowUnit g_aFo) co_aEj)
620                (sym co_aEh) } in
621     let {
622       @ co_aDA::GHC.HetMet.Private.PGArrow g_aFo () y_aFp
623                   ~
624                 GHC.HetMet.Private.PGArrow
625                   g_aFo (GHC.HetMet.GArrow.GArrowUnit g_aFo) y_aFp
626       co_aDA =
627         TYPE trans
628                co_aDD
629                (GHC.HetMet.Private.PGArrow
630                   g_aFo
631                   (trans (sym co_aDC) (GHC.HetMet.GArrow.GArrowUnit g_aFo))
632                   y_aFp) } in
633     let {
634       @ co_aDv::GHC.HetMet.Private.PGArrow
635                   g_aFo (GHC.HetMet.GArrow.GArrowUnit g_aFo) y_aFp
636                   ~
637                 GHC.HetMet.Private.PGArrow g_aFo () y_aFp
638       co_aDv = TYPE sym co_aDA } in
639     let {
640       @ co_aDr::GHC.HetMet.GArrow.GArrowUnit g_aFo ~ ()
641       co_aDr = TYPE trans co_aDC (sym co_aEg) } in
642     let {
643       $dGArrowSTKC_aDm :: GHC.HetMet.GArrow.GArrowSTKC g_aFo
644       [LclId]
645       $dGArrowSTKC_aDm = $dGArrowSTKC_aFq } in
646     letrec {
647       foo'_aDw
648         :: GHC.HetMet.Private.PGArrow g_aFo () y_aFp -> g_aFo () y_aFp
649       [LclId]
650       foo'_aDw =
651         GHC.Base..
652           @ (GHC.HetMet.Private.PGArrow g_aFo () y_aFp)
653           @ (g_aFo () y_aFp)
654           @ (GHC.HetMet.Private.PGArrow g_aFo () y_aFp)
655           (GHC.HetMet.Private.unG @ g_aFo @ () @ y_aFp $dGArrowSTKC_aDm)
656           (GHC.Base..
657              @ <[y_aFp]>@g_aFo
658              @ (GHC.HetMet.Private.PGArrow g_aFo () y_aFp)
659              @ (GHC.HetMet.Private.PGArrow g_aFo () y_aFp)
660              ((GHC.HetMet.CodeTypes.pga_flatten @ g_aFo @ GHC.Prim.Any @ y_aFp)
661               `cast` (<[y_aFp]>@g_aFo
662                       -> GHC.HetMet.Private.PGArrow g_aFo co_aDr y_aFp
663                       :: (<[y_aFp]>@g_aFo
664                           -> GHC.HetMet.Private.PGArrow
665                                g_aFo (GHC.HetMet.GArrow.GArrowUnit g_aFo) y_aFp)
666                            ~
667                          (<[y_aFp]>@g_aFo -> GHC.HetMet.Private.PGArrow g_aFo () y_aFp)))
668              (GHC.Base..
669                 @ <[y_aFp]>@g_aFo
670                 @ <[y_aFp]>@g_aFo
671                 @ (GHC.HetMet.Private.PGArrow g_aFo () y_aFp)
672                 (Main.foo @ g_aFo @ y_aFp)
673                 ((GHC.HetMet.CodeTypes.pga_unflatten
674                     @ g_aFo @ GHC.Prim.Any @ y_aFp)
675                  `cast` (co_aDv -> <[y_aFp]>@g_aFo
676                          :: (GHC.HetMet.Private.PGArrow
677                                g_aFo (GHC.HetMet.GArrow.GArrowUnit g_aFo) y_aFp
678                              -> <[y_aFp]>@g_aFo)
679                               ~
680                             (GHC.HetMet.Private.PGArrow g_aFo () y_aFp
681                              -> <[y_aFp]>@g_aFo))))); } in
682     foo'_aDw
683
684 Main.main :: GHC.Types.IO ()
685 [LclIdX]
686 Main.main =
687   let {
688     @ co_aLu::GHC.Types.Int ~ GHC.Types.Int
689     co_aLu = TYPE GHC.Types.Int } in
690   let {
691     @ co_aLt::GHC.Types.Int ~ GHC.Types.Int
692     co_aLt = TYPE GHC.Types.Int } in
693   letrec {
694     main_aHj :: GHC.Types.IO ()
695     [LclId]
696     main_aHj =
697       GArrowTikZ.tikz
698         @ ()
699         @ GHC.Types.Int
700         (Main.foo'
701            @ GArrowTikZ.GArrowTikZ
702            @ GHC.Types.Int
703            $dGArrowSTKC_aHd
704            @ co_aHe
705            (GHC.HetMet.Private.PGArrowD
706               @ GArrowTikZ.GArrowTikZ
707               @ ()
708               @ GHC.Types.Int
709               (\ ($dGArrowSTKC_aHg
710                     :: GHC.HetMet.GArrow.GArrowSTKC GArrowTikZ.GArrowTikZ) ->
711                  let {
712                    @ co_aHD::GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ
713                                ~
714                              GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ
715                    co_aHD =
716                      TYPE GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ } in
717                  let {
718                    @ co_aHG::GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ ~ ()
719                    co_aHG =
720                      TYPE trans (sym co_aHD) GArrowTikZ.TFCo:R:GArrowUnitGArrowTikZ } in
721                  let {
722                    @ co_aHB::GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ
723                                ~
724                              GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ
725                    co_aHB =
726                      TYPE GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ } in
727                  let {
728                    @ co_aHH::GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ
729                                ~
730                              (,)
731                    co_aHH =
732                      TYPE trans
733                             (sym co_aHB) GArrowTikZ.TFCo:R:GArrowTensorGArrowTikZ } in
734                  let {
735                    @ co_aHx::GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ
736                                ~
737                              GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ
738                    co_aHx =
739                      TYPE GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ } in
740                  let {
741                    @ co_aLd::GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ ~ ()
742                    co_aLd =
743                      TYPE trans (sym co_aHx) GArrowTikZ.TFCo:R:GArrowUnitGArrowTikZ } in
744                  let {
745                    @ co_aHv::GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ
746                                ~
747                              GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ
748                    co_aHv =
749                      TYPE GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ } in
750                  let {
751                    @ co_aLe::GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ
752                                ~
753                              (,)
754                    co_aLe =
755                      TYPE trans
756                             (sym co_aHv) GArrowTikZ.TFCo:R:GArrowTensorGArrowTikZ } in
757                  let {
758                    @ co_aHr::GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ
759                                ~
760                              GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ
761                    co_aHr =
762                      TYPE GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ } in
763                  let {
764                    @ co_aLf::GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ ~ ()
765                    co_aLf =
766                      TYPE trans (sym co_aHr) GArrowTikZ.TFCo:R:GArrowUnitGArrowTikZ } in
767                  let {
768                    @ co_aHp::GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ
769                                ~
770                              GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ
771                    co_aHp =
772                      TYPE GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ } in
773                  let {
774                    @ co_aLg::GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ
775                                ~
776                              (,)
777                    co_aLg =
778                      TYPE trans
779                             (sym co_aHp) GArrowTikZ.TFCo:R:GArrowTensorGArrowTikZ } in
780                  let {
781                    $dGArrowSwap_aHn
782                      :: GHC.HetMet.GArrow.GArrowSwap
783                           GArrowTikZ.GArrowTikZ
784                           (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
785                           (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
786                    [LclId]
787                    $dGArrowSwap_aHn =
788                      GHC.HetMet.GArrow.$p3GArrowSTKC
789                        @ GArrowTikZ.GArrowTikZ $dGArrowSTKC_aHg } in
790                  let {
791                    $dGArrow_aHE
792                      :: GHC.HetMet.GArrow.GArrow
793                           GArrowTikZ.GArrowTikZ
794                           (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
795                           (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
796                    [LclId]
797                    $dGArrow_aHE =
798                      GHC.HetMet.GArrow.$p1GArrowSwap
799                        @ GArrowTikZ.GArrowTikZ
800                        @ (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
801                        @ (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
802                        $dGArrowSwap_aHn } in
803                  let {
804                    $dCategory_aHF :: Control.Category.Category GArrowTikZ.GArrowTikZ
805                    [LclId]
806                    $dCategory_aHF =
807                      GHC.HetMet.GArrow.$p1GArrow
808                        @ GArrowTikZ.GArrowTikZ
809                        @ (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
810                        @ (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
811                        $dGArrow_aHE } in
812                  let {
813                    $dGArrow_aLj
814                      :: GHC.HetMet.GArrow.GArrow
815                           GArrowTikZ.GArrowTikZ
816                           (,)
817                           (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
818                    [LclId]
819                    $dGArrow_aLj =
820                      $dGArrow_aHE
821                      `cast` (GHC.HetMet.GArrow.T:GArrow
822                                GArrowTikZ.GArrowTikZ
823                                co_aHH
824                                (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
825                              :: GHC.HetMet.GArrow.T:GArrow
826                                   GArrowTikZ.GArrowTikZ
827                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
828                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
829                                   ~
830                                 GHC.HetMet.GArrow.T:GArrow
831                                   GArrowTikZ.GArrowTikZ
832                                   (,)
833                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)) } in
834                  let {
835                    $dGArrow_aLk
836                      :: GHC.HetMet.GArrow.GArrow GArrowTikZ.GArrowTikZ (,) ()
837                    [LclId]
838                    $dGArrow_aLk =
839                      $dGArrow_aLj
840                      `cast` (GHC.HetMet.GArrow.T:GArrow GArrowTikZ.GArrowTikZ (,) co_aHG
841                              :: GHC.HetMet.GArrow.T:GArrow
842                                   GArrowTikZ.GArrowTikZ
843                                   (,)
844                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
845                                   ~
846                                 GHC.HetMet.GArrow.T:GArrow GArrowTikZ.GArrowTikZ (,) ()) } in
847                  let {
848                    $dGArrowSwap_aLh
849                      :: GHC.HetMet.GArrow.GArrowSwap
850                           GArrowTikZ.GArrowTikZ
851                           (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
852                           ()
853                    [LclId]
854                    $dGArrowSwap_aLh =
855                      $dGArrowSwap_aHn
856                      `cast` (GHC.HetMet.GArrow.T:GArrowSwap
857                                GArrowTikZ.GArrowTikZ
858                                (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
859                                co_aHG
860                              :: GHC.HetMet.GArrow.T:GArrowSwap
861                                   GArrowTikZ.GArrowTikZ
862                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
863                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
864                                   ~
865                                 GHC.HetMet.GArrow.T:GArrowSwap
866                                   GArrowTikZ.GArrowTikZ
867                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
868                                   ()) } in
869                  let {
870                    $dGArrowSwap_aLi
871                      :: GHC.HetMet.GArrow.GArrowSwap GArrowTikZ.GArrowTikZ (,) ()
872                    [LclId]
873                    $dGArrowSwap_aLi =
874                      $dGArrowSwap_aLh
875                      `cast` (GHC.HetMet.GArrow.T:GArrowSwap
876                                GArrowTikZ.GArrowTikZ co_aHH ()
877                              :: GHC.HetMet.GArrow.T:GArrowSwap
878                                   GArrowTikZ.GArrowTikZ
879                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
880                                   ()
881                                   ~
882                                 GHC.HetMet.GArrow.T:GArrowSwap GArrowTikZ.GArrowTikZ (,) ()) } in
883                  let {
884                    $dGArrowCopy_aHm
885                      :: GHC.HetMet.GArrow.GArrowCopy
886                           GArrowTikZ.GArrowTikZ
887                           (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
888                           (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
889                    [LclId]
890                    $dGArrowCopy_aHm =
891                      GHC.HetMet.GArrow.$p2GArrowSTKC
892                        @ GArrowTikZ.GArrowTikZ $dGArrowSTKC_aHg } in
893                  let {
894                    $dGArrow_aHy
895                      :: GHC.HetMet.GArrow.GArrow
896                           GArrowTikZ.GArrowTikZ
897                           (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
898                           (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
899                    [LclId]
900                    $dGArrow_aHy =
901                      GHC.HetMet.GArrow.$p1GArrowCopy
902                        @ GArrowTikZ.GArrowTikZ
903                        @ (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
904                        @ (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
905                        $dGArrowCopy_aHm } in
906                  let {
907                    $dCategory_aHz :: Control.Category.Category GArrowTikZ.GArrowTikZ
908                    [LclId]
909                    $dCategory_aHz =
910                      GHC.HetMet.GArrow.$p1GArrow
911                        @ GArrowTikZ.GArrowTikZ
912                        @ (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
913                        @ (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
914                        $dGArrow_aHy } in
915                  let {
916                    $dGArrow_aLn
917                      :: GHC.HetMet.GArrow.GArrow
918                           GArrowTikZ.GArrowTikZ
919                           (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
920                           ()
921                    [LclId]
922                    $dGArrow_aLn =
923                      $dGArrow_aHy
924                      `cast` (GHC.HetMet.GArrow.T:GArrow
925                                GArrowTikZ.GArrowTikZ
926                                (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
927                                co_aLd
928                              :: GHC.HetMet.GArrow.T:GArrow
929                                   GArrowTikZ.GArrowTikZ
930                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
931                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
932                                   ~
933                                 GHC.HetMet.GArrow.T:GArrow
934                                   GArrowTikZ.GArrowTikZ
935                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
936                                   ()) } in
937                  let {
938                    $dGArrow_aLo
939                      :: GHC.HetMet.GArrow.GArrow GArrowTikZ.GArrowTikZ (,) ()
940                    [LclId]
941                    $dGArrow_aLo =
942                      $dGArrow_aLn
943                      `cast` (GHC.HetMet.GArrow.T:GArrow GArrowTikZ.GArrowTikZ co_aLe ()
944                              :: GHC.HetMet.GArrow.T:GArrow
945                                   GArrowTikZ.GArrowTikZ
946                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
947                                   ()
948                                   ~
949                                 GHC.HetMet.GArrow.T:GArrow GArrowTikZ.GArrowTikZ (,) ()) } in
950                  let {
951                    $dGArrowCopy_aLl
952                      :: GHC.HetMet.GArrow.GArrowCopy
953                           GArrowTikZ.GArrowTikZ
954                           (,)
955                           (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
956                    [LclId]
957                    $dGArrowCopy_aLl =
958                      $dGArrowCopy_aHm
959                      `cast` (GHC.HetMet.GArrow.T:GArrowCopy
960                                GArrowTikZ.GArrowTikZ
961                                co_aLe
962                                (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
963                              :: GHC.HetMet.GArrow.T:GArrowCopy
964                                   GArrowTikZ.GArrowTikZ
965                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
966                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
967                                   ~
968                                 GHC.HetMet.GArrow.T:GArrowCopy
969                                   GArrowTikZ.GArrowTikZ
970                                   (,)
971                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)) } in
972                  let {
973                    $dGArrowCopy_aLm
974                      :: GHC.HetMet.GArrow.GArrowCopy GArrowTikZ.GArrowTikZ (,) ()
975                    [LclId]
976                    $dGArrowCopy_aLm =
977                      $dGArrowCopy_aLl
978                      `cast` (GHC.HetMet.GArrow.T:GArrowCopy
979                                GArrowTikZ.GArrowTikZ (,) co_aLd
980                              :: GHC.HetMet.GArrow.T:GArrowCopy
981                                   GArrowTikZ.GArrowTikZ
982                                   (,)
983                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
984                                   ~
985                                 GHC.HetMet.GArrow.T:GArrowCopy GArrowTikZ.GArrowTikZ (,) ()) } in
986                  let {
987                    $dGArrowDrop_aHl
988                      :: GHC.HetMet.GArrow.GArrowDrop
989                           GArrowTikZ.GArrowTikZ
990                           (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
991                           (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
992                    [LclId]
993                    $dGArrowDrop_aHl =
994                      GHC.HetMet.GArrow.$p1GArrowSTKC
995                        @ GArrowTikZ.GArrowTikZ $dGArrowSTKC_aHg } in
996                  let {
997                    $dGArrow_aHs
998                      :: GHC.HetMet.GArrow.GArrow
999                           GArrowTikZ.GArrowTikZ
1000                           (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
1001                           (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
1002                    [LclId]
1003                    $dGArrow_aHs =
1004                      GHC.HetMet.GArrow.$p1GArrowDrop
1005                        @ GArrowTikZ.GArrowTikZ
1006                        @ (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
1007                        @ (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
1008                        $dGArrowDrop_aHl } in
1009                  let {
1010                    $dCategory_aHt :: Control.Category.Category GArrowTikZ.GArrowTikZ
1011                    [LclId]
1012                    $dCategory_aHt =
1013                      GHC.HetMet.GArrow.$p1GArrow
1014                        @ GArrowTikZ.GArrowTikZ
1015                        @ (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
1016                        @ (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
1017                        $dGArrow_aHs } in
1018                  let {
1019                    $dGArrow_aLr
1020                      :: GHC.HetMet.GArrow.GArrow
1021                           GArrowTikZ.GArrowTikZ
1022                           (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
1023                           ()
1024                    [LclId]
1025                    $dGArrow_aLr =
1026                      $dGArrow_aHs
1027                      `cast` (GHC.HetMet.GArrow.T:GArrow
1028                                GArrowTikZ.GArrowTikZ
1029                                (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
1030                                co_aLf
1031                              :: GHC.HetMet.GArrow.T:GArrow
1032                                   GArrowTikZ.GArrowTikZ
1033                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
1034                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
1035                                   ~
1036                                 GHC.HetMet.GArrow.T:GArrow
1037                                   GArrowTikZ.GArrowTikZ
1038                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
1039                                   ()) } in
1040                  let {
1041                    $dGArrow_aLs
1042                      :: GHC.HetMet.GArrow.GArrow GArrowTikZ.GArrowTikZ (,) ()
1043                    [LclId]
1044                    $dGArrow_aLs =
1045                      $dGArrow_aLr
1046                      `cast` (GHC.HetMet.GArrow.T:GArrow GArrowTikZ.GArrowTikZ co_aLg ()
1047                              :: GHC.HetMet.GArrow.T:GArrow
1048                                   GArrowTikZ.GArrowTikZ
1049                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
1050                                   ()
1051                                   ~
1052                                 GHC.HetMet.GArrow.T:GArrow GArrowTikZ.GArrowTikZ (,) ()) } in
1053                  let {
1054                    $dGArrowDrop_aLp
1055                      :: GHC.HetMet.GArrow.GArrowDrop
1056                           GArrowTikZ.GArrowTikZ
1057                           (,)
1058                           (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
1059                    [LclId]
1060                    $dGArrowDrop_aLp =
1061                      $dGArrowDrop_aHl
1062                      `cast` (GHC.HetMet.GArrow.T:GArrowDrop
1063                                GArrowTikZ.GArrowTikZ
1064                                co_aLg
1065                                (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
1066                              :: GHC.HetMet.GArrow.T:GArrowDrop
1067                                   GArrowTikZ.GArrowTikZ
1068                                   (GHC.HetMet.GArrow.GArrowTensor GArrowTikZ.GArrowTikZ)
1069                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
1070                                   ~
1071                                 GHC.HetMet.GArrow.T:GArrowDrop
1072                                   GArrowTikZ.GArrowTikZ
1073                                   (,)
1074                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)) } in
1075                  let {
1076                    $dGArrowDrop_aLq
1077                      :: GHC.HetMet.GArrow.GArrowDrop GArrowTikZ.GArrowTikZ (,) ()
1078                    [LclId]
1079                    $dGArrowDrop_aLq =
1080                      $dGArrowDrop_aLp
1081                      `cast` (GHC.HetMet.GArrow.T:GArrowDrop
1082                                GArrowTikZ.GArrowTikZ (,) co_aLf
1083                              :: GHC.HetMet.GArrow.T:GArrowDrop
1084                                   GArrowTikZ.GArrowTikZ
1085                                   (,)
1086                                   (GHC.HetMet.GArrow.GArrowUnit GArrowTikZ.GArrowTikZ)
1087                                   ~
1088                                 GHC.HetMet.GArrow.T:GArrowDrop GArrowTikZ.GArrowTikZ (,) ()) } in
1089                  let {
1090                    @ co_aHh::GHC.Types.Int ~ GHC.Types.Int
1091                    co_aHh = TYPE sym co_aLt } in
1092                  (GArrowTikZ.$WTikZ_const (GHC.Types.I# 12))
1093                  `cast` (GArrowTikZ.GArrowTikZ () co_aHh
1094                          :: GArrowTikZ.GArrowTikZ () GHC.Types.Int
1095                               ~
1096                             GArrowTikZ.GArrowTikZ () GHC.Types.Int)))); } in
1097   main_aHj
1098
1099 :Main.main :: GHC.Types.IO ()
1100 [LclIdX]
1101 :Main.main = GHC.TopHandler.runMainIO @ () Main.main
1102 end Rec }
1103
1104
1105
1106
1107 ==================== Desugar ====================
1108 Main.foo
1109   :: forall (tv_~N6 :: * -> * -> *) tv_~N7.
1110      GHC.HetMet.Private.PGArrow
1111        tv_~N6 (GHC.HetMet.GArrow.GArrowUnit tv_~N6) tv_~N7
1112      -> GHC.HetMet.Private.PGArrow
1113           tv_~N6 (GHC.HetMet.GArrow.GArrowUnit tv_~N6) tv_~N7
1114 [LclId]
1115 Main.foo =
1116   \ (@ tv_~N6::* -> * -> *)
1117     (@ tv_~N7)
1118     (ev_~N8
1119        :: GHC.HetMet.Private.PGArrow
1120             tv_~N6 (GHC.HetMet.GArrow.GArrowUnit tv_~N6) tv_~N7) ->
1121     let {
1122       ev_~N9
1123         :: GHC.HetMet.Private.PGArrow
1124              tv_~N6
1125              (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1126              (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1127       [LclId]
1128       ev_~N9 =
1129         GHC.HetMet.Private.pga_id
1130           @ tv_~N6 @ (GHC.HetMet.GArrow.GArrowUnit tv_~N6) } in
1131     let {
1132       ev_~Na
1133         :: GHC.HetMet.Private.PGArrow
1134              tv_~N6 (GHC.HetMet.GArrow.GArrowUnit tv_~N6) tv_~N7
1135       [LclId]
1136       ev_~Na =
1137         let {
1138           ev_~Nh
1139             :: GHC.HetMet.Private.PGArrow
1140                  tv_~N6
1141                  (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1142                  (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1143           [LclId]
1144           ev_~Nh =
1145             GHC.HetMet.Private.pga_id
1146               @ tv_~N6 @ (GHC.HetMet.GArrow.GArrowUnit tv_~N6) } in
1147         let {
1148           ev_~Ni
1149             :: GHC.HetMet.Private.PGArrow
1150                  tv_~N6 (GHC.HetMet.GArrow.GArrowUnit tv_~N6) tv_~N7
1151           [LclId]
1152           ev_~Ni = ev_~N8 } in
1153         let {
1154           ev_~Nj
1155             :: GHC.HetMet.Private.PGArrow
1156                  tv_~N6
1157                  (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1158                  (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1159           [LclId]
1160           ev_~Nj =
1161             GHC.HetMet.Private.pga_drop
1162               @ tv_~N6 @ (GHC.HetMet.GArrow.GArrowUnit tv_~N6) } in
1163         GHC.HetMet.Private.pga_comp
1164           @ tv_~N6
1165           @ (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1166           @ (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1167           @ tv_~N7
1168           ev_~Nj
1169           ev_~Ni } in
1170     GHC.HetMet.Private.pga_comp
1171       @ tv_~N6
1172       @ (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1173       @ (GHC.HetMet.GArrow.GArrowUnit tv_~N6)
1174       @ tv_~N7
1175       ev_~N9
1176       ev_~Na
1177
1178 Main.maincoercionKind
1179     base:GHC.HetMet.GArrow.GArrowUnit{tc 02y}
1180       main:GArrowTikZ.GArrowTikZ{tc roV}
1181       ~
1182     ghc-prim:GHC.Unit.(){(w) tc 40}
1183 ghc-stage2: coreTypeToWeakType
1184   hit a bare EqPred