diff --git a/.gitignore b/.gitignore index 929a0b400e..03bdc7b7f5 100644 --- a/.gitignore +++ b/.gitignore @@ -70,3 +70,4 @@ plans/ # Cursor IDE (local) .cursor/ +AGENTS.md diff --git a/src/b2t2/Datasheet.re b/src/b2t2/Datasheet.re index 3ae541ca34..2a75041487 100644 --- a/src/b2t2/Datasheet.re +++ b/src/b2t2/Datasheet.re @@ -7,11 +7,9 @@ let string_exp = IdTagged.FreshGrammar.Exp.string(content); let z = ProjectorInit.init( TextArea, - Segment.parenthesize( - ExpToSegment.exp_to_segment( - ~settings=ExpToSegment.Settings.editable(~inline=true), - string_exp, - ), + ExpToSegment.exp_to_segment( + ~settings=ExpToSegment.Settings.editable(~inline=true), + string_exp, ), Exp(string_exp), ) diff --git a/src/b2t2/slides/B2T2ExampleTables.ml b/src/b2t2/slides/B2T2ExampleTables.ml index 07d3d87444..2d340565b2 100644 --- a/src/b2t2/slides/B2T2ExampleTables.ml +++ b/src/b2t2/slides/B2T2ExampleTables.ml @@ -958,121 +958,91 @@ let out : string * Haz3lcore.PersistentSegment.t = d0e0d0cb-e44f-40af-97ab-785169e934f5)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - bdef6571-596e-4b05-8772-f8f71c725423)(kind Checkbox)(syntax(Tile((id \ - db3eb531-b32c-4209-87de-31f44ba8b454)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + bdef6571-596e-4b05-8772-f8f71c725423)(kind Checkbox)(syntax((Tile((id \ 4a9ee296-1277-42bc-aed4-330ef36d2484)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ aed47664-26e1-4c22-adb2-16bd2502e569)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 617cd735-211b-4fc4-be17-6b478ff0c485)(content(Whitespace\" \ \"))))(Projector((id f4a231b6-ee7d-4655-b51d-f3a1a3862de3)(kind \ - Checkbox)(syntax(Tile((id \ - b4b6bec5-7b71-4a24-94c9-83cfff83d74b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8a753316-de6c-4839-8298-1ff4ff5ef21b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a7595158-fa0e-40e0-8a7e-f78181e97e54)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ bcdd023f-ad37-4ac2-aeeb-eff79639b4b5)(content(Whitespace\" \ \"))))(Projector((id 366eec38-3241-43ba-8ef1-5de8b9dbe2a1)(kind \ - Checkbox)(syntax(Tile((id \ - f0023d82-5ff4-461a-86ee-630f2ce9d6c6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 46fda50a-25df-46c6-9705-be83ab3af53b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6e984b9f-e8de-496c-bc64-b89f3755dc29)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c9f6bda9-6785-4af5-8c4c-794f534d486f)(content(Whitespace\" \ \"))))(Projector((id f4f59f56-e7e7-41b7-8db1-157df91e5e3f)(kind \ - Checkbox)(syntax(Tile((id \ - 96fac430-6a31-4579-8983-b0e0f27786f0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b7ca3599-2009-44d4-b90c-783815e0710e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 586821e0-1d3c-4b72-8b2d-2b5f13a5a95c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1c2614f8-8943-4917-978a-751110d4db94)(content(Whitespace\" \ \"))))(Projector((id 05d697bf-f90c-44a0-b735-e7a0a82f67c9)(kind \ - Checkbox)(syntax(Tile((id \ - a28ab717-66d7-4708-a213-c379278dba64)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 59eebb8d-d78e-4b4c-8049-40e5dd3ac81f)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ db37ae18-0641-498a-9cac-2eba56f65b1e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 96a5c2be-caf7-48ad-9ae3-7c11a5faa1f7)(content(Whitespace\" \ \"))))(Projector((id 7365eed8-4712-40a6-aeec-48910790de57)(kind \ - Checkbox)(syntax(Tile((id \ - edc51f84-f642-48cf-974a-ea11d20422b4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 03186a1f-953f-4637-b8f1-875abfb12702)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2915d3c7-2b23-4b74-b966-8fc960037511)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ bb3902c8-f042-4c30-8599-d4283eeab02d)(content(Whitespace\" \ \"))))(Projector((id 28bde78d-adef-437b-8fee-ca763050fecc)(kind \ - Checkbox)(syntax(Tile((id \ - 6650ec41-b1cf-43eb-a686-738c13b01bda)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 87d45a3b-072d-4453-8c5b-c0cc540240da)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b8d03c02-0cca-4e9f-b9ef-f1d8e9517991)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 95b1cf10-1a05-4d11-a4e7-254fd29aebbd)(content(Whitespace\" \ \"))))(Projector((id 4863c6ef-d8a6-4cd8-8cfc-87782522545f)(kind \ - Checkbox)(syntax(Tile((id \ - 594e067b-8166-4efc-819e-d8435aa592ed)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9f178f34-7e50-41ed-9120-5e7dacf35a9b)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c5fbcb7a-3f06-4a33-92a3-7c084f149d4e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 64956c19-1e1b-4c9e-91c1-2a046e5fe697)(content(Whitespace\" \ \"))))(Projector((id bf9c0890-7da4-4a6a-b140-091f8f827375)(kind \ - Checkbox)(syntax(Tile((id \ - 99d310f2-1746-4d0b-854f-1d9ec5f483d0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c3ab6f01-bdbe-4720-95ae-d5f8d422edce)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 235153b6-08c2-4e51-a835-f65c278623fb)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e6618624-7af8-4a46-93dc-9a30799d43f5)(content(Whitespace\" \ \"))))(Projector((id e34eacd5-6a96-4db6-8b86-d175d13748a9)(kind \ - Checkbox)(syntax(Tile((id \ - 1b1c0794-5b6d-47e2-857d-41215fc415e3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c857c7ec-55a7-414e-8cf8-e93eb2aab95a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 6943af69-0760-4dcf-99fb-10729fe6a457)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1080,121 +1050,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 01109f2d-bbc6-48f6-b0b2-0b4b126c876f)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 9969a16d-6c3e-4a35-a89e-2e2b91a94978)(kind Checkbox)(syntax(Tile((id \ - f7cebd91-1af2-45e2-b552-3d4dbd733b1c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 9969a16d-6c3e-4a35-a89e-2e2b91a94978)(kind Checkbox)(syntax((Tile((id \ 386d4aa5-3fe2-4f03-a292-6fd5784b5734)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8613d49f-5b7f-4e61-823b-ee845363fd19)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f6656cbe-4831-466d-b6b1-dad9ace9e95c)(content(Whitespace\" \ \"))))(Projector((id ec1fdbc5-71f2-461a-96c2-b79d057586b4)(kind \ - Checkbox)(syntax(Tile((id \ - 0c4c558b-f74c-445c-8575-f69b16842527)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 902ade6c-da87-4cb9-b347-64a25b73f1c8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 220554a7-e254-4215-8e17-08fe92929456)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d5de3c2a-d4ae-49cc-9686-fc4325f0c6ac)(content(Whitespace\" \ \"))))(Projector((id c48d5f5c-5738-4de9-9401-3bd45e935df8)(kind \ - Checkbox)(syntax(Tile((id \ - 874c5907-85d0-4928-b1f5-e95a64c93fe5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 72dfb085-34aa-4f16-b54b-7986fea18216)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fb9e9785-5cae-4baf-8ac7-727e765d6c55)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d459b45b-06b0-450b-91bd-edc03c78a3f5)(content(Whitespace\" \ \"))))(Projector((id 1c917664-7d1f-41ac-8192-e3df6db63526)(kind \ - Checkbox)(syntax(Tile((id \ - fbd29c52-1423-4869-aa61-8876e207419c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 124577e5-b077-41e3-86da-8e157af8298e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6a4481c0-d915-44e6-8819-84d3dbeee99c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e1cb331c-a975-4da1-b1b8-e572f93d792d)(content(Whitespace\" \ \"))))(Projector((id d30f5cfd-d66c-44ff-b5db-58f34c999a5d)(kind \ - Checkbox)(syntax(Tile((id \ - b0249444-d348-4002-9b2f-94603f5e79d1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ be3766fc-c559-4b29-aefc-c9f8478e84a6)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ eb74f609-e130-4ece-8a22-938bd32da738)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 407a5ea3-eef1-4b81-a3d4-55d0e3ede769)(content(Whitespace\" \ \"))))(Projector((id 4b068c55-2841-47e7-b6c4-191cc23dbce6)(kind \ - Checkbox)(syntax(Tile((id \ - a5de8742-9024-4bbf-bede-483791d4145a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1a3053a1-0d5d-432e-9221-dedd3961b753)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5feef39b-5d58-45bf-b82d-12c638faa003)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 80ace3cc-d603-4863-98f3-deed45904a72)(content(Whitespace\" \ \"))))(Projector((id e8eb88d0-9296-40e4-bbc1-e86b88524a8a)(kind \ - Checkbox)(syntax(Tile((id \ - 6f0bcd22-11ed-4877-b947-c68dfd58338a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 30f40169-e2a2-484f-adb9-39f302ef0b27)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3b5e3fb1-ac1e-4d7a-a4b6-27b0ad7635df)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c6a5cd39-b56b-4fff-bdad-2a1b3eca88f8)(content(Whitespace\" \ \"))))(Projector((id c67a5546-b810-4714-a79d-d3ef16dc7be2)(kind \ - Checkbox)(syntax(Tile((id \ - 19ca78f9-41bd-4f20-86e8-779761f4812e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3cf45196-bcfb-43b6-a5be-4fbed08f1f6b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 15325575-a408-4f6e-b70b-dddcf12e8eed)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f52f4cd6-d9c6-4864-b032-c6e8475d844f)(content(Whitespace\" \ \"))))(Projector((id 4fec9af4-7bc8-4f48-8d95-2540696d4482)(kind \ - Checkbox)(syntax(Tile((id \ - 2feb0bc9-5939-4c0e-a1cf-d0af6e57220a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ efffe177-a065-4897-b2b2-3cf3df978c7a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3e4e102d-a225-4d83-a16f-257b761edbf4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ef3520c8-581c-4bc2-a5d7-ae9be0cc8931)(content(Whitespace\" \ \"))))(Projector((id a0518b69-fd8c-4c2b-9785-d52b2a7c27fc)(kind \ - Checkbox)(syntax(Tile((id \ - 537f9d5c-f032-4a07-b347-82d21e509d36)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5b2571d6-943f-4290-9bd1-6ad3ef7689c9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 3150604e-bd37-435b-b45f-86fc6baf4250)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1202,121 +1142,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 8c6c66d4-fce5-47fa-81f0-d37ba978631a)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - c7873442-16ab-4e90-a568-0e20238c225f)(kind Checkbox)(syntax(Tile((id \ - e906099b-87c4-4fe9-b241-e1f0661b5378)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + c7873442-16ab-4e90-a568-0e20238c225f)(kind Checkbox)(syntax((Tile((id \ 9604ae73-cbf2-4d2d-9df4-6a4d72589d57)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a6bd19ce-09f7-433a-b5b0-ed456bfe1b35)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0bd3c586-59be-4bc4-9182-e43c82cb66fb)(content(Whitespace\" \ \"))))(Projector((id 7c423caa-3dc9-42d8-86aa-ec6da9878a40)(kind \ - Checkbox)(syntax(Tile((id \ - 9d849d37-23bb-45a7-ab2a-559e6d6f8fb1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9e6b54da-ed8f-42ed-9888-17116dd5460a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ db96add1-dfa1-40fb-abc6-008316754a05)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 10cf3e80-d3a4-4e71-b1c7-f55e65057b26)(content(Whitespace\" \ \"))))(Projector((id 3b58ddca-7e13-489e-9510-c03068b9867d)(kind \ - Checkbox)(syntax(Tile((id \ - 062f5e36-8581-426a-8cdd-d19799406044)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 16e449b1-5680-444e-b4bc-d6c1e3687368)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3a78247e-089b-4b32-be9d-40f873a4c3ab)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9233a64a-dd0f-4988-88b7-2338472447ed)(content(Whitespace\" \ \"))))(Projector((id 5fe78ae2-3643-4b30-8662-2261ac87741f)(kind \ - Checkbox)(syntax(Tile((id \ - 871d804d-7677-4571-819b-69c41908087c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3e7bcf85-d562-433d-969e-bbe604c769fc)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ dfb26c6b-1592-4d5a-9ec2-297f779a8c33)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9a733148-642a-4ee4-8514-4f4cbfd9e221)(content(Whitespace\" \ \"))))(Projector((id bee88eba-5c0f-49a0-8076-c81d90e13e1f)(kind \ - Checkbox)(syntax(Tile((id \ - e644e46d-6b6d-4ddc-84d1-be90b4fc35f8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ac4c2752-f35b-4d7d-b881-c8c427562f59)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 39dbcde2-c8a1-4a1a-9be5-bdd8efb7a835)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 233a9bda-917d-4cb5-93fb-275835b66259)(content(Whitespace\" \ \"))))(Projector((id 48025974-eb77-474b-944c-85e37df8a244)(kind \ - Checkbox)(syntax(Tile((id \ - 61c53929-ecc3-4372-bd90-15a208e7176a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a99c63be-d78e-4981-a9d7-2a26afe3f3b9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 03b53ecf-5a87-479b-920f-232f52cf49c3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ baa94cfb-3dfc-4f73-905f-2d0925281f0c)(content(Whitespace\" \ \"))))(Projector((id 65a06038-090a-4a2d-9562-182a43009321)(kind \ - Checkbox)(syntax(Tile((id \ - 18f4dea2-bb1a-4c45-b80f-4ba8ee33dce5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b95b9fec-8fe6-448b-8e58-468699fcc880)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0dca73a2-73af-4bc0-9ea9-7cd3319e9819)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d2aac4f8-8eb7-4827-b07d-ec37430f9012)(content(Whitespace\" \ \"))))(Projector((id ba53dc29-ddf6-413e-96c1-bf5ba2a027f2)(kind \ - Checkbox)(syntax(Tile((id \ - 837b66d5-0508-446a-8ede-3e648e770a0a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 776d60d8-4296-496f-b30f-fc2f2f1c238c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 564f6e59-4ee8-4836-9fd9-2c4a8f61c51a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ de40d876-eccd-4666-9ea9-f9004395d94c)(content(Whitespace\" \ \"))))(Projector((id cdbca81f-c0a4-41d5-a39c-6278c10f6945)(kind \ - Checkbox)(syntax(Tile((id \ - 3ae7fca2-27ec-4d78-a213-04fa57230e20)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d41a2689-fb05-4677-be95-286873dfb6fe)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 47465e4e-3f2e-4be3-ac08-ced8eb4d4aca)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 903e9156-c1ff-4c2d-8259-654b5be05f49)(content(Whitespace\" \ \"))))(Projector((id 1e134b89-efcc-4c2a-81a1-d3ddea5e8f66)(kind \ - Checkbox)(syntax(Tile((id \ - de44e80d-e8d3-4d4e-b17d-77404fa7811b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 00e7440e-3a3a-4a12-a539-86ddddaaab66)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 9bafe98f-dee3-4436-8c6b-614295107154)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1324,121 +1234,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 6a7dc497-434d-4b32-9e50-3fabc5e398e1)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - a609ec74-d298-4777-b33f-c9fdccf78719)(kind Checkbox)(syntax(Tile((id \ - 2e7685e7-969f-4734-8e0f-d50c204fce8d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a609ec74-d298-4777-b33f-c9fdccf78719)(kind Checkbox)(syntax((Tile((id \ a616e0df-7374-41e5-a6de-94477fe3f087)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 265fe391-4a66-4ab3-8d9d-0bd47b7b1e46)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a71fa93a-1b38-486c-acad-b0ad004f65aa)(content(Whitespace\" \ \"))))(Projector((id ba854f3a-9451-4395-a21d-6f7191aa2cac)(kind \ - Checkbox)(syntax(Tile((id \ - 67fc6812-5638-4f0a-80f6-2edc9ff58522)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 95db6adb-008c-44db-9660-73b7ab6a7df0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 55526af1-3127-413c-9e47-9563ebb3d371)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 141a8595-c92a-4a0d-ae68-110c12fc4a5b)(content(Whitespace\" \ \"))))(Projector((id d91afeda-4812-428e-a26d-5f57ae5a7728)(kind \ - Checkbox)(syntax(Tile((id \ - 260a9305-dcfd-4c23-8727-a8c0e592e409)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6698f795-122c-4a02-983b-8782ba65da8c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3c827524-9b22-4f7c-b7e4-1f2717d2ab08)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9eb80bf6-39dc-46c2-a5b4-83a8f2762d49)(content(Whitespace\" \ \"))))(Projector((id fd0a31e9-feab-4ad9-b237-f24429db27ba)(kind \ - Checkbox)(syntax(Tile((id \ - 05fd5cf1-e3c5-418a-baef-671097f03424)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ff88a194-beb0-4e10-8371-c89e14cc7abe)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 64f052c9-1821-4c47-8a6a-931ce18f5365)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 489b8981-100f-4ea3-bcda-204677833a74)(content(Whitespace\" \ \"))))(Projector((id 906f16bf-09f6-439e-b3df-6954abd1c5af)(kind \ - Checkbox)(syntax(Tile((id \ - 996ccede-9436-4345-ae30-14282d321c46)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6b5ac0c4-5603-43dc-8fc3-ae2734dd39a9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b5df6275-8585-4ad8-8e9b-2cf7615ca257)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f52cebfd-87f1-4812-b611-d303c47565c8)(content(Whitespace\" \ \"))))(Projector((id 125cf10d-f270-4b99-aa67-ffa1ae21c75f)(kind \ - Checkbox)(syntax(Tile((id \ - 661d208c-c542-48f7-9341-7198f2bf62d3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a55e050d-e449-44b9-bb23-65e39452f283)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 58c8afe8-3aaf-432c-9431-83a66dfe26c0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 5f45d473-692d-43fd-b9c1-fbcc7aef0366)(content(Whitespace\" \ \"))))(Projector((id 1b3b8419-7b37-41ea-bd93-0436a0493f9a)(kind \ - Checkbox)(syntax(Tile((id \ - 27704f41-8dd4-46d2-aaf1-2d8ba60ca464)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6f82d522-44c6-48bf-9e9b-d5b1ccdf0740)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f342df37-8858-4dcc-9b8e-3efcce743978)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1580eb72-bb63-4f7b-85da-cc58820e727e)(content(Whitespace\" \ \"))))(Projector((id 801eeaa9-da5b-411b-b9d0-edbfa90ec9fd)(kind \ - Checkbox)(syntax(Tile((id \ - 1667e71c-2dd3-4d7d-8bec-17ff08173e1e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1e4e847d-98b2-446c-8bfb-364ce5cc7b78)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c83adce1-4c9b-4dfc-ae2f-8600a483c34d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4511239e-68c1-4aed-92c6-b309d72c008b)(content(Whitespace\" \ \"))))(Projector((id a9059839-b3b6-4567-a4b2-a168212413f4)(kind \ - Checkbox)(syntax(Tile((id \ - d718cb46-0c0d-43f8-84e0-a41659fc419e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a7c51d9a-01e7-4c37-ad88-19c7aad5f541)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1b97ee21-060a-4b59-8926-1c8163b671af)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 70c41d3a-3780-4393-8264-8af4148e021c)(content(Whitespace\" \ \"))))(Projector((id 0a5c173d-db86-42a5-9110-a9c421d3b720)(kind \ - Checkbox)(syntax(Tile((id \ - a2d2606b-879a-4e3b-b593-07a20ec373c4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4ccf0b7c-04f7-4adc-a1ad-73431530137b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 0b8047f3-0e50-49ab-81bd-95103c80193a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1446,121 +1326,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 8aa2155a-acd1-453d-912d-fa0545044d58)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - a4c4d8d8-8c68-4b78-9008-c1236839d2cc)(kind Checkbox)(syntax(Tile((id \ - d8c78134-ef98-4552-b943-7e3c5c68cd0f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a4c4d8d8-8c68-4b78-9008-c1236839d2cc)(kind Checkbox)(syntax((Tile((id \ 586a0bfa-7a51-4a0a-b6c4-18cf111e1372)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8c09f20c-ceb1-49f8-bb80-3e0f0d826ef5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7a61f83a-43d6-49b2-b89a-b00cdb91e225)(content(Whitespace\" \ \"))))(Projector((id 8e08fb33-d926-4057-ac89-53f5e290180f)(kind \ - Checkbox)(syntax(Tile((id \ - 69e6eb29-8dc9-4b7f-8ef0-87b5e7d3a167)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a4f4fe16-c852-41fe-adca-8af0f0f773cd)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b7d38e48-d4ca-4a80-b5d6-c3d224eed55c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 198122f9-509f-4357-af00-9b86d39fcd0f)(content(Whitespace\" \ \"))))(Projector((id 0e4c74e2-7d4f-483f-b418-900de702045e)(kind \ - Checkbox)(syntax(Tile((id \ - 11b0c266-a76c-4aea-9793-b22624400c8c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5cfee4c2-5da1-458b-b560-78c031e3f6d6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6117dfe3-84f8-455e-9824-7bf0e719b2f5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0368e374-c2e1-469f-8d94-de146d0e6155)(content(Whitespace\" \ \"))))(Projector((id a74c7de8-8187-4e81-b7de-ababcd89e3df)(kind \ - Checkbox)(syntax(Tile((id \ - 4bd53fc7-16d9-4eaa-9bbf-b98d638d0e0a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 599f6b0b-fba8-49f5-b3d9-a5c0122d75e3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2a14ccea-a38c-4bac-859e-385c95af943a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ dfe099d3-075f-4200-abef-e9d496fca29d)(content(Whitespace\" \ \"))))(Projector((id 7b37327d-9644-483a-a35e-ffe868d84f7a)(kind \ - Checkbox)(syntax(Tile((id \ - d19ffeb6-cbef-4a56-89a1-cc02e6640e10)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 458ce2e4-73b6-41ab-86eb-aece9a93bed4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f5dfce78-c0eb-405d-bbae-7ed28244bdca)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8782f034-ebdf-4536-9957-0f61c428e65f)(content(Whitespace\" \ \"))))(Projector((id 401d2ed3-1742-4335-bbbc-b7822f1da199)(kind \ - Checkbox)(syntax(Tile((id \ - e73aee33-628e-4da1-b2b2-c02b5d4a44cb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 041a371d-3a5c-4b06-be01-0d40825d0288)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 231fe8bb-4027-4675-a68d-5ed4ed7c97a6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ec79912a-1a41-4668-bc2e-64496dd8ba18)(content(Whitespace\" \ \"))))(Projector((id c534ff1d-28b4-4243-9a30-5bc46a6654e2)(kind \ - Checkbox)(syntax(Tile((id \ - 5cd04f09-7f61-4071-9390-a741b1ad6da4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 52ba16ee-942d-4f82-bc48-e40c65837070)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0dac1cd7-f5c5-4d72-8ee8-f270ed4a99d6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 656ab482-3f53-42d1-8a22-36250918eb5d)(content(Whitespace\" \ \"))))(Projector((id d9e70567-6b5c-45af-9532-8e3ac894a4cb)(kind \ - Checkbox)(syntax(Tile((id \ - 271b69a0-21d2-4813-ba38-aad14d434f3b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6967f79a-64fd-4296-becb-db31a6e9457a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4ef83e1c-61e2-4e65-8adc-5d16c5c5753e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 14b712a4-9642-40f0-b278-737a53423e46)(content(Whitespace\" \ \"))))(Projector((id dc4164aa-0b87-4e39-b527-c0b80d8f6f3b)(kind \ - Checkbox)(syntax(Tile((id \ - bf9ba31b-6680-40c3-90eb-8fc8e5d1394e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ fa82fe02-6f59-4820-b1e3-097f80d74246)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ea5f5847-5426-4d28-af34-85a28c37eeee)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 52f7881a-5249-4575-b365-8489f6345ee4)(content(Whitespace\" \ \"))))(Projector((id 9d1ddaf6-1fa7-40fe-a898-649ad4e172e5)(kind \ - Checkbox)(syntax(Tile((id \ - 091553cc-d544-4ab6-88ac-1f182da70f5d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d13f694e-bcd1-4ee3-8410-b39baccf9f56)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 3fc9406d-5b3a-41d5-9772-ed5bd5e099dc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1568,121 +1418,91 @@ let out : string * Haz3lcore.PersistentSegment.t = ec0bec7e-2ed0-410d-b449-c3b16e757493)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 97a88f8b-4f13-45f9-b2f4-35099c12918d)(kind Checkbox)(syntax(Tile((id \ - 2631bd93-8a65-4c17-9ca3-0f54ff0480a0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 97a88f8b-4f13-45f9-b2f4-35099c12918d)(kind Checkbox)(syntax((Tile((id \ ab349426-7c92-44e9-ae4a-1ca0c9d951b9)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 29ec4fa4-f815-48b2-b6a1-44ae76352556)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 577a3adf-51de-46e3-a77e-0499023bce84)(content(Whitespace\" \ \"))))(Projector((id afe9d13b-6a72-48a4-8151-6aed67a1fcd8)(kind \ - Checkbox)(syntax(Tile((id \ - 63ebf84e-a4bb-490e-879d-f01859204c84)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c658001c-acb1-4dd5-8759-1535b2d1892e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8f8cce97-2fdb-424f-a38a-b1e082d1f714)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 5874b9da-5f0f-45d8-bd00-55af3e922cc1)(content(Whitespace\" \ \"))))(Projector((id 807e9894-f848-4cbd-8750-ebecd7f823f0)(kind \ - Checkbox)(syntax(Tile((id \ - 09a53c1e-607f-498a-ba5c-758d4143a96f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 229c6ca1-9e48-4192-988d-2aed4d58d7ef)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ac17cad9-abc2-40eb-a288-e26f3c0f1daa)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 04b8acde-d916-4c65-9b82-797bb8080af0)(content(Whitespace\" \ \"))))(Projector((id 04de0012-9c52-455c-8bed-6bf25b07bc20)(kind \ - Checkbox)(syntax(Tile((id \ - 4a366b81-9944-44c3-b970-0f471eb08beb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9a8b4ae5-a566-4f19-94e6-89f1a216f64b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f10e4f5a-55fc-4bff-b1ec-44f0c12aa430)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 52ccda7a-84d3-4161-b934-0022c021ad6d)(content(Whitespace\" \ \"))))(Projector((id e2b86265-d6e3-4628-8e4f-cf86042f378d)(kind \ - Checkbox)(syntax(Tile((id \ - f4d12eec-0c47-456b-9ac2-e521f02fbf81)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 242a8530-c4d1-48e6-8f87-4bc3a976e757)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b73b3eef-65c8-4db1-87f9-62fc4a1eb48b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ dd833969-316c-4214-af13-0b8b2ffa7a0d)(content(Whitespace\" \ \"))))(Projector((id eba88fff-7e15-429b-ad18-0026ac6c4c61)(kind \ - Checkbox)(syntax(Tile((id \ - 4e821df7-418c-424f-b555-855c2958a021)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e850777d-15a9-437f-a42c-f22f8dd86a89)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ecfc9b42-69e5-4059-8900-c2479e3547d9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9c85ec27-eb2d-4dbb-9708-384daa3bc733)(content(Whitespace\" \ \"))))(Projector((id cf931305-6160-49e7-b6d7-32eb568d7599)(kind \ - Checkbox)(syntax(Tile((id \ - 367e7932-b363-4980-8081-909f0685b37a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 80618583-f5a7-4c94-8fd7-3352bba5a5bf)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 641485b8-356b-43fb-b643-60a54fc2cbb2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a8d414a0-85ee-42a1-9049-699dd748134e)(content(Whitespace\" \ \"))))(Projector((id 527e0b85-dbf6-417c-848b-4293732e7503)(kind \ - Checkbox)(syntax(Tile((id \ - be829e28-9000-45f3-a9b0-65df963739c8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e9aa3df9-9f58-458b-81da-5b15560479b4)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c26ec9d1-ca16-4eba-b110-91b3ae1b0c8e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2514d433-e012-4c68-a1a5-9ee42326ee6b)(content(Whitespace\" \ \"))))(Projector((id 9cfef715-08ff-4bed-bd14-1e1105bb0ee4)(kind \ - Checkbox)(syntax(Tile((id \ - 1bc846ed-a14e-4a3d-9bdb-1ce32932f553)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6725c330-c545-45bc-822c-3d799bc3f7c3)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0204f3e9-7ec8-42d4-8a17-434554c732d3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 25bee35b-e46d-468c-bb4e-c11d51b924e7)(content(Whitespace\" \ \"))))(Projector((id db4f8884-5f51-4f34-82c3-88c00e35ea24)(kind \ - Checkbox)(syntax(Tile((id \ - c3a06e3d-d360-4f30-acc9-02a11a37034f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 36a5f570-f389-4b91-bcd5-63ece72a6123)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ dd77f09c-a7ab-4330-97d0-73c0e8e55dbd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1690,121 +1510,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 3481f15c-41a1-4973-b60d-eb67a8a60d98)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 451585e3-1ea0-47a9-8ca4-bd5acfdffaa4)(kind Checkbox)(syntax(Tile((id \ - 69ad1d50-e35c-4efb-a3af-766d4ce7e4c3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 451585e3-1ea0-47a9-8ca4-bd5acfdffaa4)(kind Checkbox)(syntax((Tile((id \ 0dc0630b-db62-4f24-9a5a-45cbd3487e7e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 45115743-47d8-42b5-bca3-d67962e214a0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7ed4b7f7-af60-4be4-8934-88c11bfa05b7)(content(Whitespace\" \ \"))))(Projector((id 332d3063-8efb-4055-828b-8db4d2e49b2b)(kind \ - Checkbox)(syntax(Tile((id \ - 656e8159-cf89-45a3-bfc0-79c9fc73540e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e657594b-fd32-4370-8ba8-d56f2be730b5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8ca48810-4847-49d3-ba1a-fb122a2f0d0d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 94814e99-912e-4b5c-b8fa-15bfbff5d12c)(content(Whitespace\" \ \"))))(Projector((id 454dadb9-dca0-4361-b8ba-c856b7acd9eb)(kind \ - Checkbox)(syntax(Tile((id \ - 3b12ae45-7dde-43ab-8882-e34b6d4354ec)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8f48269f-3388-4836-8471-8b45035f6428)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 07153f4c-8432-4ead-8490-b7db439b9bcd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4bbeb82a-2996-4fde-9c31-877b7d6cfbf3)(content(Whitespace\" \ \"))))(Projector((id f6f09ac2-fdf5-4bb6-8946-bfdb363ff517)(kind \ - Checkbox)(syntax(Tile((id \ - 622d3a09-ecbb-40f7-b968-b12d4697e467)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 127b10a5-c50c-481c-a8a8-e27907907739)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3ae7840b-29e1-438d-83fe-0a02b3c57c25)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 82f26ba8-af66-4a8a-8f88-5d1caaf73c6d)(content(Whitespace\" \ \"))))(Projector((id 099c41a0-d4f8-4b92-a1dd-7a43149d0fd7)(kind \ - Checkbox)(syntax(Tile((id \ - 586269cf-dac7-4fd2-8aba-85d0df5f63f5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6aae0edd-7a38-4dc9-9a96-8ffc557cd9e4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ddac56a9-764f-4a0c-9fc3-5fc5211b8211)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b810639a-861a-485a-8a9c-3f5876231e3a)(content(Whitespace\" \ \"))))(Projector((id e729c033-7c71-46fd-bfc0-9a8ccbf14f40)(kind \ - Checkbox)(syntax(Tile((id \ - 106a5501-37be-490a-86b2-2ebc72bbd6ee)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f049828b-49f6-4c20-8a18-efc72133c47d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e2ca7d44-221f-43bb-926d-d469f9b5b038)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 5b01276e-c9b2-4617-b093-305b8c69b39b)(content(Whitespace\" \ \"))))(Projector((id 54dd636f-7e3d-4a3a-a9c7-a92870ad0f5c)(kind \ - Checkbox)(syntax(Tile((id \ - 4bbb80b3-bc61-4a35-b2b1-ac200f1a4d24)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 82bef480-14af-4eb9-b63a-f844ce8d26d0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f7a55d64-ed24-491d-adcc-3b9ef2e684a7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9faa9454-9b98-460d-a457-58b2ee2a29df)(content(Whitespace\" \ \"))))(Projector((id d0d241b8-f996-451f-9457-c183cfaf035c)(kind \ - Checkbox)(syntax(Tile((id \ - f2a65ff9-cac8-48a3-aff4-f67a25775f06)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b6f86598-91b8-472c-a230-1950f3d3e55d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0cae5e2a-2056-489f-a62f-38c861b9c192)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 687ffa61-461a-4a9f-a786-1fc54d676120)(content(Whitespace\" \ \"))))(Projector((id f88e3943-aee5-4816-88b1-9df8c72f2177)(kind \ - Checkbox)(syntax(Tile((id \ - cb83cc64-9949-4123-a634-5154a6974120)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1c2f986c-27a3-4790-857a-0a8a24a82102)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 14a8d6dd-1cc7-4a2c-8a0a-eba977764311)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1471436a-0ce3-4dca-bb1b-6cca3ba40a30)(content(Whitespace\" \ \"))))(Projector((id 3b156f59-0d36-4080-9e04-3f91f97e471c)(kind \ - Checkbox)(syntax(Tile((id \ - ed516fed-8525-4f67-bbfd-bc2fad42dba0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a1e90927-5c61-408a-965e-ace5c5f456cc)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 28b5fd05-1950-400c-a1aa-44d529b4ffda)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1812,121 +1602,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 278ac9b5-7e2a-4d9b-bb26-cc7aabe9298c)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 68ab881b-e320-4347-a7a7-39d717d020bb)(kind Checkbox)(syntax(Tile((id \ - 6f5db9e2-9d56-4bb5-8be1-845706a61261)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 68ab881b-e320-4347-a7a7-39d717d020bb)(kind Checkbox)(syntax((Tile((id \ 199ce2fc-3d82-4710-8480-64cebb9627c8)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 79d03682-7fc9-4924-84bb-9f8b37c14c04)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a24359a6-af94-4ed7-a09d-1ac9dcf41417)(content(Whitespace\" \ \"))))(Projector((id de097a96-5797-4412-8b80-2fcf4100825b)(kind \ - Checkbox)(syntax(Tile((id \ - c2a75827-fc22-42a8-baac-34549c78f855)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 70bdf75c-2e69-4d71-bd7d-67bb78a551e6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 547fc82f-5f67-49eb-a1e1-aff57ba7950f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f4c3686b-8cd7-4796-a8ef-03e5461e6979)(content(Whitespace\" \ \"))))(Projector((id 2d0966ae-6cee-4dd0-b741-c5a623eaa0cc)(kind \ - Checkbox)(syntax(Tile((id \ - d470b863-04ae-4b0e-9fdd-958680831c67)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 167282e2-fe9c-4657-817e-74764eb19ae3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7cfe37ef-0497-4b45-a35f-c267f56962ce)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2205a0e8-5fe6-49ed-8514-fa3d6b3fcc83)(content(Whitespace\" \ \"))))(Projector((id 8c91671a-5df9-4e7e-aff8-e2769198e5a6)(kind \ - Checkbox)(syntax(Tile((id \ - db0bf526-a3cf-4b6b-8eb4-463616fc519f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cad06d39-1169-4566-b9c3-3fe708819a53)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1d1eccc0-a3e7-455b-a295-d6e46e427ee5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 945e1eb0-496d-44d6-930f-93225860d24e)(content(Whitespace\" \ \"))))(Projector((id 23749b96-9acd-4e08-a691-5c340fc07965)(kind \ - Checkbox)(syntax(Tile((id \ - ce59f5aa-5ac8-4ee8-8e43-8f84a20706f5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e216bf12-6a05-4d80-b676-7f7987603d15)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a40c5c2f-ad1d-4036-ad4a-19bbf656aaa5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e5a59cf8-69e2-4cc3-84fc-180773c3ef4e)(content(Whitespace\" \ \"))))(Projector((id cadfa5bd-f76d-4b23-9c61-14180079aaf0)(kind \ - Checkbox)(syntax(Tile((id \ - 12cae0f5-f343-4c99-b0b4-a2cb2ab82497)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1d532e8e-70bd-4487-8285-5a591cc48b70)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3280887f-6264-4707-a101-7114d4007c78)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ec2824d8-2d3f-42ad-87d2-a4aa2145b47c)(content(Whitespace\" \ \"))))(Projector((id 0227b028-3654-4ffd-ad0a-188c8f45dc41)(kind \ - Checkbox)(syntax(Tile((id \ - e851b423-097a-4257-9723-c23243a24877)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e70f97b5-e0f8-4e1a-8511-49e7b6151130)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5b078270-6328-40ae-ade8-4d32b72421a9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d0568c3e-4ed5-409b-8be9-1d57b27c9819)(content(Whitespace\" \ \"))))(Projector((id 064e50eb-1b6e-4486-b434-d427d1c1a27f)(kind \ - Checkbox)(syntax(Tile((id \ - c478ceb1-e0d2-4d1f-9574-fd62b9413ba5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0303ab7f-8c8f-4110-9bc5-8af0f7657fbb)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 51142042-784a-40ee-9cb1-b6a2e738e731)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 23b603bd-6694-4d36-8513-7f02d99e48ff)(content(Whitespace\" \ \"))))(Projector((id 657fd080-37a7-40c8-ac34-4cfa6b9c2e6a)(kind \ - Checkbox)(syntax(Tile((id \ - 71d281d2-9a8c-4d26-b145-623fab61d48e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 111c60b1-387d-4dbe-bdac-965400ff590b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 484240a8-b73c-47be-a5c5-4b991ac8b82a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 714c5ca3-e261-44f9-a718-b57232320d8b)(content(Whitespace\" \ \"))))(Projector((id 59f83b12-c853-4d3e-b7c5-639ff9cfbda8)(kind \ - Checkbox)(syntax(Tile((id \ - 33f9fece-d1e2-4ce7-8d8e-cadcd230f042)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 255fbbe7-cd91-426a-a173-a8df1db68e11)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ eedd2b68-5ed2-4ddf-bb88-a87a6d67d367)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1934,121 +1694,91 @@ let out : string * Haz3lcore.PersistentSegment.t = b65bf971-755c-4ce6-a1a9-2b958342d036)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 9d2d8942-1a9f-4c26-8185-ff7951abe60d)(kind Checkbox)(syntax(Tile((id \ - 12f40ac7-598f-43be-9e51-ba0a6d2d98b3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 9d2d8942-1a9f-4c26-8185-ff7951abe60d)(kind Checkbox)(syntax((Tile((id \ 83f9e645-c11a-4a62-8184-94e1b8415e5d)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c7fc1dca-87de-43cf-9225-00f08f014d8e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e51b1ff1-09d6-4574-becb-f81eb17d9d0b)(content(Whitespace\" \ \"))))(Projector((id 41f0f6dd-af7a-4c9e-91fb-710b771a7f54)(kind \ - Checkbox)(syntax(Tile((id \ - 74af54db-13a9-4d8d-b43e-ea9abf025ac6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5bc23ce3-6b3a-416d-be44-047bd27faa62)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d85c4e7e-f095-4397-b5d6-a27e1f03fabc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c0668bdb-4152-4174-bc12-5fcfdf89a189)(content(Whitespace\" \ \"))))(Projector((id 3cd61fcc-653f-4f0d-b4c0-f9ecb8fdc8bd)(kind \ - Checkbox)(syntax(Tile((id \ - 578971bd-5c14-46a1-981d-c47ce29e45f6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d1b7ac8f-a578-464c-a2ca-baff939918fa)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e1e05564-876b-4ea1-94b7-4b99a128b0a1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1cdd285c-cc21-4c50-b9cc-4688d1ac6fe9)(content(Whitespace\" \ \"))))(Projector((id 631c1c15-4f8a-41dd-87e8-9d5bd1c4ed8e)(kind \ - Checkbox)(syntax(Tile((id \ - 8fb50897-eabc-4a5d-956f-1a51143df494)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 07fff1c5-4580-493b-aece-171f1a5adc8f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 725bc3fe-2834-4b9c-bb13-2bf38817f7a5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2baf9e19-14e8-484f-acc5-4aab71d437a7)(content(Whitespace\" \ \"))))(Projector((id 6d3ff9b8-fd63-4336-80c9-993a91663058)(kind \ - Checkbox)(syntax(Tile((id \ - 16cff778-2e1a-4e8b-ac7e-3ad55912c71b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 464a649c-c0af-477b-b53c-b8fc0beb2765)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 77f22398-f5f5-425f-9e01-810019fef01e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8c6a8a19-3cac-416b-89c0-02c396422617)(content(Whitespace\" \ \"))))(Projector((id 29e136a6-6bae-47f1-858a-4e30ae959072)(kind \ - Checkbox)(syntax(Tile((id \ - 64590bf0-ba90-4da7-861c-b3add13e419a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0930804b-5d45-4259-8d7a-d7df840449a9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 437a161c-f720-4764-ae3d-d00781f8feb3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9068088b-4c22-46fe-bc7b-6fb00ecb598d)(content(Whitespace\" \ \"))))(Projector((id fa190114-1b5a-4359-813d-862f93d216c1)(kind \ - Checkbox)(syntax(Tile((id \ - 1222eaf1-b311-452e-8eeb-a7b943e62a18)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b939194b-1974-4f92-8429-a6408e074c73)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 21a1fa5b-e5a5-4882-8720-e97c9f274945)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f7abdddd-fb61-4cfe-a219-3c0f9db151a1)(content(Whitespace\" \ \"))))(Projector((id dca9c36f-5ae1-46f6-b075-d59ec9d21175)(kind \ - Checkbox)(syntax(Tile((id \ - 65bf2f3e-58e4-43c8-81f5-e357daf603c7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7fc5ed61-79f0-4d90-b9de-86cd0a13f429)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a5e7bc98-9d35-4cd4-9473-4f9e752e7e63)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0d2613b2-bc4b-472e-87ca-95e8a7b8c630)(content(Whitespace\" \ \"))))(Projector((id 883214cb-926a-4d40-bc5d-24a0a5e7b552)(kind \ - Checkbox)(syntax(Tile((id \ - 90cb0da7-92ad-42ef-933b-ac9522f58ab5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2842a726-2a92-4cbd-8ab9-34a25a5bc6c9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 87529335-b969-4881-8770-204455afc82a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f41077bf-2837-4677-b53c-759bada4f200)(content(Whitespace\" \ \"))))(Projector((id 53d1d9f8-545a-4181-842c-ccdd76a5e81b)(kind \ - Checkbox)(syntax(Tile((id \ - a4a643e5-eb5f-49a4-a9cb-ac35e614f467)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 626914e2-815f-4e56-943a-fef9a788058b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 899c5d49-81b0-4f7e-8be2-1cd7f12d94a1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2056,121 +1786,91 @@ let out : string * Haz3lcore.PersistentSegment.t = eee14278-6510-426a-be83-a5101f53e25d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 785e6322-c4b3-48f9-8d36-c283611e2179)(kind Checkbox)(syntax(Tile((id \ - b1af005d-ce71-4ffb-b16c-117b7c89c6d5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 785e6322-c4b3-48f9-8d36-c283611e2179)(kind Checkbox)(syntax((Tile((id \ 4f5c0748-39aa-432d-8009-0ec7c0137762)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 09bcab2a-45f5-4daf-8a47-6b914df058d4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 5645a4cd-d9ea-447c-b363-5cb7a7a6765e)(content(Whitespace\" \ \"))))(Projector((id cdf38fab-3c23-463f-92ff-016524329491)(kind \ - Checkbox)(syntax(Tile((id \ - 59d7c101-c5e0-456b-b1af-4d9e380c8a3e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ da4fe7d1-4941-4d7f-a36e-ac221c9c14ce)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 461fda16-4e4c-4dde-9ddb-a77973a67f26)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 44c005e4-6a95-4ffe-a0ef-5aac7b675a54)(content(Whitespace\" \ \"))))(Projector((id 9212bea7-2dd2-4d83-9764-93d267a6418b)(kind \ - Checkbox)(syntax(Tile((id \ - ec4553c8-f5a3-48d8-8567-7f9d48dc44f6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1af565b6-f3a7-457c-af53-f8652412fed5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c751154b-2651-4979-bd5d-797d7f8b8558)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ aeb1492a-3861-435e-8042-77f928b38705)(content(Whitespace\" \ \"))))(Projector((id fab0538b-b1e3-4da6-91ae-c71fd05b3761)(kind \ - Checkbox)(syntax(Tile((id \ - ad6ef900-bbb2-4135-9e6b-c317f756254e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 518aa48f-e979-4c54-9aac-58666a0cd49a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fd9f9bfb-23f5-45f7-a6da-ae16c1d77788)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8ac6e7cc-54e6-49bf-b330-ee3118a270f9)(content(Whitespace\" \ \"))))(Projector((id d63da67c-ca07-4c95-a8a1-53fdc830cde7)(kind \ - Checkbox)(syntax(Tile((id \ - 8f61f5f7-ee4a-453b-be86-a292d288678a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e16fd11a-5907-422f-972a-71de054e82f8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 689afcf8-e77d-4eaf-8db5-9ee00f19fe1c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1ed093f3-eeae-473a-a9ab-88f2cbcda128)(content(Whitespace\" \ \"))))(Projector((id e95c54ad-78b1-4aa5-9ad2-61c060fc9c57)(kind \ - Checkbox)(syntax(Tile((id \ - 39d7e270-bf15-4729-885f-51159f09b06e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bd40f8e6-cb96-482f-a6c0-f6e567400343)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8575980e-ec68-4fe2-adbb-41f70bc75605)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2b7350af-3071-4993-9199-dc9a7441bcf5)(content(Whitespace\" \ \"))))(Projector((id 3257c3c7-7fb6-49f7-8527-674b4cccbd13)(kind \ - Checkbox)(syntax(Tile((id \ - 8759e5a7-8ca7-4305-8667-1b25d3d77ce7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c383f9cd-aa6a-40ab-a77c-de9b48ddca3a)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 78a53404-b901-46ac-80a4-58070e05fb6a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c6f80584-6f0f-4a3b-8ea4-fa1327306f88)(content(Whitespace\" \ \"))))(Projector((id 0d4f5482-986c-4a15-82cf-6a88ed87efc0)(kind \ - Checkbox)(syntax(Tile((id \ - 83df15d0-3dbc-4321-8bdc-d2b5d6a2520d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3672c742-251a-4b14-8598-20748fc0a9a6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 29419df6-0647-445a-9756-8744c88a0974)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 6038099b-3fef-4465-bfac-03a4de705810)(content(Whitespace\" \ \"))))(Projector((id 6095e4fa-0c36-40c0-a517-d4bbabe41632)(kind \ - Checkbox)(syntax(Tile((id \ - 5b83882c-4967-4ee4-a5ba-33f738cca836)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 828d7c41-e0a8-49b8-8b7d-32e896d2809a)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8bc25158-4864-4716-ab6b-ea34806ac968)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1c330915-96c5-4025-aa04-e1ef75171314)(content(Whitespace\" \ \"))))(Projector((id ea9def76-9595-459a-a93e-6798a2900bb2)(kind \ - Checkbox)(syntax(Tile((id \ - 9a84bca0-df2a-41fe-95e6-f0b6d9e4bd5d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b230b0d7-4021-472e-af0c-b8c1349030ef)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Secondary((id \ 90ef78cf-bbc9-459e-830c-a949cb9aecb7)(content(Whitespace\"\\n\")))))))))(Secondary((id \ 0b763049-a65c-4491-979f-5b8e3fde6ccb)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -2387,121 +2087,91 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ faf219bb-b3ca-45c4-bb1a-6fa4ad4a5923)(content(Whitespace\" \ \"))))(Projector((id 0a299dd8-accf-43dd-b59c-55b246c11c28)(kind \ - Checkbox)(syntax(Tile((id \ - 3186a9ea-385b-4dba-ad23-a22984e2cc76)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 799f9027-00ff-41a0-968a-2e3926309e10)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4e7e858f-dfb5-4881-a079-4db87e715af2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1bb98af0-6f49-40aa-ad45-2767df3b472c)(content(Whitespace\" \ \"))))(Projector((id ee1eff94-abd0-402e-b76e-8962f1e7364b)(kind \ - Checkbox)(syntax(Tile((id \ - edc972b0-ce1c-47ab-a536-f002685d0c0c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 057d9ad7-be3f-476e-b051-9dbd681f9c47)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ee1bd33d-2e2c-4edf-ab9a-bc68e4e7e28c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8024db98-af8a-4623-88b8-be9a9b368e93)(content(Whitespace\" \ \"))))(Projector((id 00f27fc7-e290-4588-971f-2aee9dcdd905)(kind \ - Checkbox)(syntax(Tile((id \ - 1c464e47-6225-4916-b857-43d48011ce49)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ aa46f58e-fe1f-4022-9d4f-bee524b0a9a9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 45f2c3da-0de0-4a26-8272-c5b026be3596)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 121ee6e3-92ae-4663-864b-b8b92155818f)(content(Whitespace\" \ \"))))(Projector((id 21736a83-8a82-4d39-8c67-60ca468ece4d)(kind \ - Checkbox)(syntax(Tile((id \ - 4820fffd-9035-4f19-b639-1eb4374abeef)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9c0b7ee2-f3ff-474f-9147-cf1d9510afc3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a3493363-4b63-4d5d-a869-e73ad018fe00)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9443eb1c-7b1f-48d6-82ec-af870c652424)(content(Whitespace\" \ \"))))(Projector((id 1abb516a-2aae-47a9-af46-3d73efbfc2f2)(kind \ - Checkbox)(syntax(Tile((id \ - f18d9031-28b0-4472-abc4-855b20fe3b3b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d4b0175e-2920-46ea-8353-c1c89227727e)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ffa2cfc2-8e18-446f-b2d0-de655401d33b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a4c13d4f-524e-46af-95b5-daee40d20e6b)(content(Whitespace\" \ \"))))(Projector((id 7e11fea4-3129-45d4-b97a-c21a8f31b085)(kind \ - Checkbox)(syntax(Tile((id \ - fcb58c54-ea83-4c92-8a53-763c17c2bc1f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ aeb45db4-58eb-44ee-bde9-acb61c4c692f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5cae0436-7ba7-49ae-9576-fbc37532a221)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a96af504-ed7c-4e52-b97b-3fee645dfcad)(content(Whitespace\" \ \"))))(Projector((id ac64caaf-5e26-44ef-a8db-7da4afcd20fc)(kind \ - Checkbox)(syntax(Tile((id \ - a191af09-6446-4d3e-99d4-e12566007b05)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d5bd0f1a-7cc0-4063-87a2-c14d9d340e43)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ bcd02dd5-cfbf-4ed0-87cd-64f9dded1176)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4f037d6c-2324-422b-8568-b5eb2aab26dd)(content(Whitespace\" \ \"))))(Projector((id 52953636-32a1-433c-b5d4-75433c9400dc)(kind \ - Checkbox)(syntax(Tile((id \ - 761da731-f3dc-414f-ae4e-5191b95603e9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ fd8fe630-bc1e-46fe-94df-25acc0786d61)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c8e4d4eb-44bc-40d4-8dc0-e99fda66f23e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 37205c08-6aaf-4160-a8bd-0ed5d113b714)(content(Whitespace\" \ \"))))(Projector((id 315c44e5-ba45-4c05-be5b-7411adcc3848)(kind \ - Checkbox)(syntax(Tile((id \ - ac77ee75-c22e-4bec-953f-11b3e4161965)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bad764cf-91c7-48e1-8676-44f4e22ae7c6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4387893a-21cb-4330-b297-fdd9bc877e90)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 95d94b77-8601-46ee-98d4-5e7d6100e90b)(content(Whitespace\" \ \"))))(Projector((id 2d48fb28-ab64-4731-8201-df70b3286d0b)(kind \ - Checkbox)(syntax(Tile((id \ - cb17506d-e44b-4ed2-940a-842330871638)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5a151483-ffb3-4fad-ac65-f32202903350)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ e65904ae-27f5-4e5c-8d01-8277b99ee64e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2523,121 +2193,91 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ 2d09496d-13f0-4647-bc54-a601c30f9f6b)(content(Whitespace\" \ \"))))(Projector((id 2d058b39-9884-4982-98f3-0e0ee9f5727e)(kind \ - Checkbox)(syntax(Tile((id \ - 5f630a92-e676-496b-9719-6a45f78bb983)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0d0ee4fd-03ea-44ec-81ab-59c138027736)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 961962d9-a4bc-4037-9019-1d61d755063c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 76934263-f480-4cc6-84a5-da03cf5ca826)(content(Whitespace\" \ \"))))(Projector((id 1904196f-2bc1-4223-a6bf-044faadfa524)(kind \ - Checkbox)(syntax(Tile((id \ - 1d7f39b3-0d12-4917-ab1b-38317d9040ae)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d46784e3-93a8-4381-9077-15c36fee999f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 148dcbaf-0127-4535-8fa4-ba491a612dd7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2c43e64c-d1ad-45de-8563-8b646e8ecdc9)(content(Whitespace\" \ \"))))(Projector((id 35b8a868-59a4-41fc-b929-2b9fd076801d)(kind \ - Checkbox)(syntax(Tile((id \ - e82fdb60-2be7-4ac7-91a1-be73ca0180a4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c2c0f94f-a180-4f35-889e-7a164885833d)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 93cc164b-7703-4814-bc86-7afc0de7f0f6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ed9ca311-60ef-4240-85b9-0e1f1ed2a93c)(content(Whitespace\" \ \"))))(Projector((id 8836a4eb-ea75-4d46-b1e4-ddef7399efc6)(kind \ - Checkbox)(syntax(Tile((id \ - 1b6c927e-3df4-48b4-9d78-9946bd26049c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ df044558-7867-42ea-8ce3-dff18a360f3e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4d8a841e-690c-4d79-822b-2f9028fcf53b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 28dcbbc5-8c07-43f4-b384-11577d60e5e5)(content(Whitespace\" \ \"))))(Projector((id 53e840ee-cbae-4765-8a37-c5d263d6ed64)(kind \ - Checkbox)(syntax(Tile((id \ - 8b0bf288-ddba-4004-8598-2445ebef1066)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 77664a6e-db84-468d-8405-a7de88888b5d)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3a656b86-19ae-407e-af88-03b6c042415b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 69812523-fa48-4ce1-a8e6-b612eb758b62)(content(Whitespace\" \ \"))))(Projector((id 8dd127ad-8852-47d3-bb03-c797bbdf63c4)(kind \ - Checkbox)(syntax(Tile((id \ - 091ecfc0-e62c-4ef9-8c1d-cecf1f602418)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2001f94d-20d8-4a3a-bd21-b6f5ffb95c92)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9d2d91b4-a8ad-4012-9c81-f751b6f0ad72)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f769f8ea-ffbd-45b3-a093-b8fb280368bf)(content(Whitespace\" \ \"))))(Projector((id b0f7f26c-87c4-4384-b960-574d4428e7c2)(kind \ - Checkbox)(syntax(Tile((id \ - 3f450249-d0bd-4692-beca-d6ec262428f0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 21ae888a-9f61-4f2c-86fc-afde1f816efb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ adba9c7e-a08d-403f-b53d-655fddb8ea46)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a7b6b87c-37fa-4607-a43c-baa161429855)(content(Whitespace\" \ \"))))(Projector((id 9453e751-91c8-4339-a2ef-81ec62282d3d)(kind \ - Checkbox)(syntax(Tile((id \ - fa050d95-afb3-485b-9f92-a813a7d6cdec)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d519830f-f82e-4913-8d29-4838319e993c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d614e4ca-d73b-4a3e-9722-079d931c8d66)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 179914d6-85db-492d-8b75-d5aa5bd3fd3b)(content(Whitespace\" \ \"))))(Projector((id 1b2236e2-a7c7-49f6-810a-522c55994c34)(kind \ - Checkbox)(syntax(Tile((id \ - 9579faad-12fc-4fa7-a679-6de63f860ea6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ead43c7b-3296-4d9f-ad2a-f9bcadeb4542)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 87b10a20-0fc4-47f2-aadd-026d8c8f810f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ aa756d07-3c31-4b6f-a350-b5475be6a89c)(content(Whitespace\" \ \"))))(Projector((id 822c5e99-e15c-402e-8a89-28ee8c57e826)(kind \ - Checkbox)(syntax(Tile((id \ - 5aca6afa-5a8a-49b1-b2be-2c815a53295c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2b76ecbe-8cd1-46bd-a0a1-f24dd504a20f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 7979b775-0577-4a4e-8e8b-37a219140f9a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2661,121 +2301,91 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ 4ed93af4-f00a-48a9-a671-950800f88ebc)(content(Whitespace\" \ \"))))(Projector((id 2c7f57b2-bf65-4adc-9e33-5bf0b01163d7)(kind \ - Checkbox)(syntax(Tile((id \ - 086e5bba-049d-4e24-a131-cced1fd8defc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1528a9a3-b833-4f01-bfb1-56b54241e8fb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c002a7bb-7ba3-4754-a268-78b00a1b62b5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e399b01f-136f-44c2-928a-e0f91000e11c)(content(Whitespace\" \ \"))))(Projector((id 27563e84-a899-43d0-931a-9ce710016b8a)(kind \ - Checkbox)(syntax(Tile((id \ - d7c95fa7-f77c-4ac9-9443-3650d70b686b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1278b94f-d886-442b-bc54-48745ab0829a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cde95a6c-d5fc-4d2e-af0c-e233e14d2140)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 12e7a9ee-26d7-4fa4-ba20-26c334b21a07)(content(Whitespace\" \ \"))))(Projector((id 42e5625c-7600-4472-ae52-b616d97a788a)(kind \ - Checkbox)(syntax(Tile((id \ - b40935fc-9107-48df-b230-3e560ae1ec3b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d69c6e31-6da0-4046-ba26-c791a01c9f01)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b982d71a-439a-4d9a-b493-a153dcc6de71)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7a79122d-ee22-4bf6-9564-c82aef797bcc)(content(Whitespace\" \ \"))))(Projector((id 4dcbb19b-b31a-4f9e-993c-8d7c83a66aee)(kind \ - Checkbox)(syntax(Tile((id \ - 0aea6562-0560-4ba1-b29e-4015ff639b61)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9649e2e4-8b39-4052-b9f4-80c7600d054d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 896fda98-cdf8-4899-a312-3146b3227368)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ef297c4a-a1e7-409a-b9fd-9baefb5e3e4c)(content(Whitespace\" \ \"))))(Projector((id 80bcb3f4-4a1a-41a9-91eb-7af967c588b0)(kind \ - Checkbox)(syntax(Tile((id \ - 531d6544-c50e-470e-8afe-b96650c42f12)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3a9e495d-13fb-4611-b87d-377ecc2ea903)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ faade3e3-a8d2-4f7b-808a-4974a3e2b04b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e43dd84e-9c0e-4d77-984b-3b837080cd38)(content(Whitespace\" \ \"))))(Projector((id af0bf6b9-0452-4a0a-accc-09232f13410e)(kind \ - Checkbox)(syntax(Tile((id \ - dfa7842a-12c5-4ca0-a358-a01f2ae43c79)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c31678cf-c449-436a-9fa9-d24764fa196c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 43b1335a-5290-466c-8e3f-94c1d5c67af2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4990a289-a789-4a17-83fe-9abb120d3ed1)(content(Whitespace\" \ \"))))(Projector((id 82f73db6-9012-42c8-9314-1097e6e88596)(kind \ - Checkbox)(syntax(Tile((id \ - bf6308bc-8a01-4400-a735-8cda29823b1e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7f583e5c-3133-4068-b38e-e336682cdae7)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c52489f3-a2e7-413b-b00c-3bf756fcfe12)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e6bee4db-79b3-4189-83ec-8b6edea37ecd)(content(Whitespace\" \ \"))))(Projector((id b7700331-07fd-4064-a1c2-320f5275acaf)(kind \ - Checkbox)(syntax(Tile((id \ - 28bbb697-b2fe-4c38-b3f9-ef9be73aa67b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7af2f421-f1e7-4a64-800e-614e12c59c22)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 294bd495-e4c8-4d33-afb6-06f15c8070da)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 537ef999-31dc-4051-a512-8a69c011415a)(content(Whitespace\" \ \"))))(Projector((id dcc6544d-268f-4c2a-b24c-6d005448c069)(kind \ - Checkbox)(syntax(Tile((id \ - 0cc7cc07-42a3-4a10-9750-02a7fedfac79)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ fe6bc8d7-c1f7-4810-83f4-1063c3145948)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1c631392-acd5-4c0d-b331-b160f4db9c20)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7025172a-d6f0-43e7-8c60-8d22ca609921)(content(Whitespace\" \ \"))))(Projector((id 4656c1a9-26de-451a-9e53-2d2328cbdfe2)(kind \ - Checkbox)(syntax(Tile((id \ - 73e475d4-564a-4f24-8c87-4abd4b6f4eab)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ac3f90c5-a0fa-4a70-85ea-2551834a5da9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 2e619a6c-c2d5-4209-afba-94044748c4f5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2797,121 +2407,91 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ edcbd247-925c-450b-ae1b-f75bdb4d0c0d)(content(Whitespace\" \ \"))))(Projector((id ce722e16-44c0-4864-ac53-395aafa61cc0)(kind \ - Checkbox)(syntax(Tile((id \ - 176fae88-6fe0-4d6a-a24d-2bb55898bb22)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d1f54c06-a02c-4f72-ab61-84dabd5ed808)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 80983a28-754c-4f18-9432-3584f242af65)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b34b4345-7066-4efa-94d3-6b0fa70d32e1)(content(Whitespace\" \ \"))))(Projector((id a711f95a-6499-4bac-8c55-c028d8807d91)(kind \ - Checkbox)(syntax(Tile((id \ - a37477e3-64a3-49b0-a169-28c43eadf7cc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d5ca8188-40a0-4f30-924b-4fd4c80cc3b3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 249ea612-d17c-4b36-be3b-74e9c1ad6917)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3c0463e3-af7c-42ab-8e95-79852bf0513b)(content(Whitespace\" \ \"))))(Projector((id d0d6c1d7-22d4-4789-b69d-cc5e2ff01cd6)(kind \ - Checkbox)(syntax(Tile((id \ - 98d457cb-aaf9-4754-a182-93d184ea67d9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cc47186f-5206-44f1-b19a-9053edf2d204)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e725d8f1-d49d-4067-9ac7-38d17e69d3e6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 5e1ed3ed-4f66-443e-a797-f845d9cc1bae)(content(Whitespace\" \ \"))))(Projector((id 0da4658a-c83e-4c1f-be02-965bcf833fa8)(kind \ - Checkbox)(syntax(Tile((id \ - e2488f80-e503-4d30-8907-4105628f978f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7ab62e72-782a-4e1a-9050-41902611225e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 384b5cbc-31e7-4b82-9a1e-9d7a509a3e5f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 29010fb6-37c1-4b3a-8fe8-261c893dc28c)(content(Whitespace\" \ \"))))(Projector((id 540745e6-9b5e-4d93-85df-f95d518a73d8)(kind \ - Checkbox)(syntax(Tile((id \ - 2f02adb5-5c74-4c62-a059-4132ae34eb5f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 293ecabe-fa6e-4678-9f43-78c600ddc1a5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a719b4bd-3439-45f9-a184-7f833593147a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 812d5854-12da-4a6d-bbcd-13486be7fecc)(content(Whitespace\" \ \"))))(Projector((id c0fa5955-7211-4a61-85fe-36331c7eba42)(kind \ - Checkbox)(syntax(Tile((id \ - c70b3a1a-57ae-4785-88b0-9d051dcffaee)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4c566855-6266-4575-9ef5-6981f839c57c)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b6ad4354-a0d0-44f0-9d4d-d0ec08f480d6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b720e489-aa3f-450b-a787-2c65c9ccdcc4)(content(Whitespace\" \ \"))))(Projector((id 20b0e7a4-6c2e-4656-8e8f-698d904cf058)(kind \ - Checkbox)(syntax(Tile((id \ - 406a80e6-5945-498c-a469-7268ea268a9d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 09bba4c4-a8f5-4e14-b504-7c126ad2c7cb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 083a4452-f6ba-4871-a2d2-9e8cf975c00d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4538472f-5683-4409-9371-fc9d84db3cbc)(content(Whitespace\" \ \"))))(Projector((id 95fc88c7-43c1-4bc4-9b7c-9990d5a77402)(kind \ - Checkbox)(syntax(Tile((id \ - 1ba2ab87-e600-4018-a2dc-2fb1865b8f47)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 117d0042-e107-49e2-9d9e-0f05082826c0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 07ac11d4-2609-4f91-b458-660a907d8857)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8b3eafac-153a-4456-8914-433251b91b45)(content(Whitespace\" \ \"))))(Projector((id 71f2ddeb-ff8b-430c-a96e-1d6f33ea96ae)(kind \ - Checkbox)(syntax(Tile((id \ - 7a7f5ad2-484e-4519-8751-82343a2b4e69)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3876d3f9-2651-4e02-b099-03c3f3a37c41)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1da8312c-d87b-484e-899c-5b4fb06ff27b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1895ce4f-2b73-46db-ab76-00f2011298b8)(content(Whitespace\" \ \"))))(Projector((id 6241ff10-89c5-4b1a-ac99-bce3ddb945dd)(kind \ - Checkbox)(syntax(Tile((id \ - 305fb0ef-cffb-46fc-9f53-2a8b3411158e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 55efcb76-4dc6-414e-9e80-8c4a19eafef4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ f3530c9f-58d5-4258-903f-b69d8ef883da)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2929,121 +2509,91 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ cc58289c-e006-4851-ad09-dfe9b6553903)(content(Whitespace\" \ \"))))(Projector((id 0799fba7-2ac1-4cd6-be98-76e72301b780)(kind \ - Checkbox)(syntax(Tile((id \ - bde6548e-4f08-4e5e-956b-07e53078791f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ aefcbb74-ec68-4a2d-8d13-f6703521cd64)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8c41d086-ef4c-4a91-b3cf-8ac4021ba1ad)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2d9b622e-ff8f-43e5-9bc4-8332354da553)(content(Whitespace\" \ \"))))(Projector((id c16dc7c1-86b4-4509-98a1-3ac38c666df7)(kind \ - Checkbox)(syntax(Tile((id \ - 073aa164-4994-44f2-b3b4-5710efd692fc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5ecfd077-8d0c-4f23-8258-26fce4427742)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5de85a4b-73f1-44bb-96f7-9c7fc939cca8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 140d8687-fb84-4b1f-8726-17d8bfee9b55)(content(Whitespace\" \ \"))))(Projector((id eef8ac09-c736-4d8d-b0d3-b4adabf90470)(kind \ - Checkbox)(syntax(Tile((id \ - c042087d-b2a4-4d4a-894c-9c9d258fb33f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 597ba503-b64f-4d5e-b6ed-dee8824376c5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e7347756-d764-4350-b843-4de4ce33312c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 45085dfb-645e-4518-b881-41a8275dc41c)(content(Whitespace\" \ \"))))(Projector((id 6bf21bfb-522e-4a4a-a7fb-9824bccddee2)(kind \ - Checkbox)(syntax(Tile((id \ - 8661dfeb-c0f4-4bfb-b1fa-df5de6156810)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6f979403-e279-4bbc-b9a3-b5b08c4e66aa)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c838a281-d2f7-4d7c-9676-af46d9df0311)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 52d2bbc9-ed19-46b7-9d55-a748c0fa489b)(content(Whitespace\" \ \"))))(Projector((id 66f436c2-2a1a-4801-9339-8dabd90f5bf8)(kind \ - Checkbox)(syntax(Tile((id \ - b736523a-166f-413e-b8cf-ab64196af6ff)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 95ce3692-570d-479d-8ae9-bac0cef88fb6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 88136551-51b6-4c88-bdd9-7530f34b45a3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 35b555d9-a8ab-425c-9059-81849f0d2b48)(content(Whitespace\" \ \"))))(Projector((id 86f4ead7-c8d7-49ae-a8c1-a2a97f7312d0)(kind \ - Checkbox)(syntax(Tile((id \ - a090b409-3272-4686-87a5-9723f791ee4d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7e2d0ec3-80fa-4c06-9f24-58e12f655bdc)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3c85544d-4671-4a27-a0a7-476659a18aa7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 15a5b959-5e42-4561-abd1-6fae6116b655)(content(Whitespace\" \ \"))))(Projector((id 4b37558f-c549-4828-b736-8853eff0328e)(kind \ - Checkbox)(syntax(Tile((id \ - 26dafcff-a938-4d78-9d74-c3d3c0de2da8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5220d8de-1452-484a-a507-985868dc4cdd)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 28b709fa-8b83-4d08-969a-704a2359211b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a7cba5ad-f20d-4e43-bc52-b7e349e49609)(content(Whitespace\" \ \"))))(Projector((id 54ae445b-89cd-4bd6-ac31-c8b5080ff530)(kind \ - Checkbox)(syntax(Tile((id \ - 2627423c-61e0-4a51-8ebc-a9caa6ded6f9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 95789069-1488-433d-a5c3-2a0a6e201694)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f35b3f9b-df3b-497a-93a8-bbf865fb9392)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 33a58ba8-b4ae-41cc-a6e6-e13a2ed291c5)(content(Whitespace\" \ \"))))(Projector((id 7cfcf9b1-fa6c-4830-9952-f690f4f6f941)(kind \ - Checkbox)(syntax(Tile((id \ - f8ae1f63-b4db-4ce0-8fe1-02dea42003fe)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c13df126-c78a-4a81-a297-4354c683b861)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 13cb5b8f-96f2-418b-b6fa-102d63c2ab39)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 02819720-6d32-4cc7-9091-9d08102b070d)(content(Whitespace\" \ \"))))(Projector((id 69a097ba-7787-4199-a7ad-7b8783571f8a)(kind \ - Checkbox)(syntax(Tile((id \ - 070223de-99c9-4049-b84a-33b763e9c066)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9b555df8-77f1-4dc7-b633-a909c7445ea3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 4d118414-ee88-407b-86a2-b8e55fe5f1db)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3065,121 +2615,91 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ e47eada1-62b7-4590-aba2-a5acce3c5680)(content(Whitespace\" \ \"))))(Projector((id b27eab06-e172-4487-be8c-646bc2e2cdd5)(kind \ - Checkbox)(syntax(Tile((id \ - 5f502077-3c0e-4d48-bf31-a3f781778931)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6eb04086-5b87-4ce3-abb9-f905af76c952)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3a48483c-1000-492f-945b-c18d4dbf29d9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 76450fdc-a044-426c-a7bf-66a08bb0fb0b)(content(Whitespace\" \ \"))))(Projector((id b770325e-255f-4741-9a2f-e4fb60d40d80)(kind \ - Checkbox)(syntax(Tile((id \ - 153f7ef3-d151-4c84-adfb-9d1eff837c72)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9e0e9bf7-c380-4ba2-80b1-e05fb28dcfe0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ df1da9b5-723b-411d-96f7-66e5d0a3de19)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c380e15e-7c7c-463b-b688-30498736b742)(content(Whitespace\" \ \"))))(Projector((id eaa52562-36a4-4731-b4b7-ab09e7c7b00b)(kind \ - Checkbox)(syntax(Tile((id \ - 0d63691b-8309-466f-88f6-67f73518ae2b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b4b46ee6-8702-404b-97e5-b7ef422d3d57)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 81af59a4-1c56-4a09-a58d-f5928fd590f6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0f55f3ae-0c95-4ff1-9f95-7e8e01abffc1)(content(Whitespace\" \ \"))))(Projector((id c44e4633-8ddf-4419-9258-5f1bed5b44f2)(kind \ - Checkbox)(syntax(Tile((id \ - 52a44229-64f5-477c-95ef-eeaab885559e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8759203c-951d-4650-a46b-5980d139a471)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4ad2213b-7c0c-4d80-abf4-a54f7c4ca3ba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c6609e2a-8083-4bef-8ce5-f3906c19d3f6)(content(Whitespace\" \ \"))))(Projector((id c63c0a2b-3439-40c0-9924-158aee8d1f9e)(kind \ - Checkbox)(syntax(Tile((id \ - 4ad7962a-9957-460e-b190-593b42e07048)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9b7956c5-fd71-4535-8d5b-33274e3c1bd8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ dabcae32-2308-47c4-9459-742af1901b10)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9d2969e4-e425-419a-94e9-d43c03b0a4a5)(content(Whitespace\" \ \"))))(Projector((id e3773d3f-c238-40ab-a62b-a2e7dbe0814a)(kind \ - Checkbox)(syntax(Tile((id \ - 9cdc9b04-99b6-4f55-b019-634ec44c5746)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2ea81ba0-4e81-466e-975d-ca1356a91317)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 30095470-2e71-4b7b-81bf-98591e7f75df)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ebfb1b5d-940c-43ce-9f6f-c026e38a221c)(content(Whitespace\" \ \"))))(Projector((id 4c60957e-83cc-4849-9f6a-28240e022999)(kind \ - Checkbox)(syntax(Tile((id \ - 9e5c1980-99c5-4a82-9a4d-dde9bd641af1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 105d37c0-ac8f-48b3-b3ae-cce22f6b7979)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ade760e3-f005-4bac-a9b9-2afc57311da7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 556a9587-1c22-4d69-b18b-a8df95d82fde)(content(Whitespace\" \ \"))))(Projector((id 0ceeee22-64d4-4bfe-86f4-c38e1a957cf9)(kind \ - Checkbox)(syntax(Tile((id \ - 724d0923-b75b-4ba5-873d-8632b49a6efb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ea172563-6932-4883-9a51-83d4fba2765c)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7c81f10f-4738-4e95-9d0e-f3d9f0f31bba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 949c2c5b-ad75-4c5e-af69-5b1070cbcfed)(content(Whitespace\" \ \"))))(Projector((id aad7e35c-15b5-4a54-93c6-a0dd31b3124b)(kind \ - Checkbox)(syntax(Tile((id \ - f3adf351-100d-4454-95ac-53fc42660b85)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4c9f7ea1-4067-4c1c-bcf2-16c2b06ab04f)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 970d6786-5759-4dd0-9d7c-38c2fdc67e3b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 189a1d13-c9c6-438b-b28c-cfb6752617f9)(content(Whitespace\" \ \"))))(Projector((id 8cd5e276-1042-4891-9df7-43403e5e6053)(kind \ - Checkbox)(syntax(Tile((id \ - ad74b958-4adc-4743-ae80-ce418d1a827b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5a34f8cc-4a4b-49e3-93ff-642c92fd6e66)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ ba21b39d-b7e9-49f3-80b3-e4c86716cba0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3199,121 +2719,91 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ e7d32780-8e7c-41e5-b396-39f98a205667)(content(Whitespace\" \ \"))))(Projector((id 74d2f184-25ae-4750-832e-6c6e4f5f3f42)(kind \ - Checkbox)(syntax(Tile((id \ - 3a565888-5706-4d6f-8225-2444d53aea86)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8114fe09-f290-41f2-8cad-bc16a540807a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cde1ef9c-0789-4d18-83e0-6f43fdfcb189)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9b36f131-8c40-4b3f-9fec-c37829cde7f2)(content(Whitespace\" \ \"))))(Projector((id 7fe087a3-182f-4eae-b208-969e4c2f197f)(kind \ - Checkbox)(syntax(Tile((id \ - 0169103a-586e-4ccf-bf27-51e96435bfcc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1b5c9b99-3eba-4a86-8534-a665c1b87693)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7d4e7c60-ad8e-4344-a542-8ec4c4f31acd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1df72116-5b86-4c56-921b-d5f2eeceadd8)(content(Whitespace\" \ \"))))(Projector((id 0f296e7f-a2df-4e86-94ea-34a131089efe)(kind \ - Checkbox)(syntax(Tile((id \ - 38694115-7568-4878-b99f-781dee4dc832)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0dc8d84c-0fdc-4561-ba41-9d536e0223c4)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a6098e9f-46b1-4b36-89f6-c875ce17ac1f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3bc1c46b-5782-4b02-8710-deba55ccc5e0)(content(Whitespace\" \ \"))))(Projector((id 85caeb2a-4835-4f66-97de-6cc88fe9180f)(kind \ - Checkbox)(syntax(Tile((id \ - 292e1c2c-572c-49c1-9dad-d7106166c054)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3575d9c8-ae1e-48f1-8e85-d56af3a8a070)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ec3cf707-1888-46cc-95f7-bc2d8b48c1ba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 75bb5b01-6100-41fe-b760-ef5985adcbf7)(content(Whitespace\" \ \"))))(Projector((id be9055ab-ccd8-4986-af87-761f9977bec9)(kind \ - Checkbox)(syntax(Tile((id \ - b8564dea-e7c7-4ec1-92b4-9bc664c5cb94)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f8c3afff-4b7e-4496-82d3-e635e3d10b33)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 89264f8e-39b1-447a-8db1-f95ca9cb5dcf)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 53e76b63-75c5-4963-a3d9-e6fddd8d0d7e)(content(Whitespace\" \ \"))))(Projector((id d19af18b-e97a-4751-9c66-c12cdd1ff7f2)(kind \ - Checkbox)(syntax(Tile((id \ - 24804c73-d990-4c5c-8437-f925e6711583)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9b7ce792-8635-4e03-9b42-905ab1001d4e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7e4efbd3-d3c2-45e4-b8e1-70d6e2dc3916)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a4c1d980-b101-4bb2-bdd3-b2beece0d98e)(content(Whitespace\" \ \"))))(Projector((id f3341099-ffa3-4ae9-9756-8d6464cfd428)(kind \ - Checkbox)(syntax(Tile((id \ - 412b0490-9f31-4528-b877-729fd2b7b2a1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 200dcf57-a39f-4e76-9b52-feb85cc12368)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 046ecee4-871d-477d-9999-82f0a818a494)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ bdfd2d47-d9e4-4253-8b20-19b25c4b7b4d)(content(Whitespace\" \ \"))))(Projector((id 4dc8bfe3-b4ac-4f0c-9c48-457f5746920c)(kind \ - Checkbox)(syntax(Tile((id \ - 131f80b6-94cf-4f62-a7a0-60c7fac6e497)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cdf05f23-1496-41d3-bf8a-939c71f884fd)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a110bc59-5cfc-4bcd-86d7-cbfadb95464d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 496d6c8e-b994-45fe-8ef8-9008d4ffa524)(content(Whitespace\" \ \"))))(Projector((id e533ca0d-e7de-40a4-8f29-6562f05f0efe)(kind \ - Checkbox)(syntax(Tile((id \ - 01182832-a16b-48ea-a247-70c6c15fdc8e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 93aa9e0b-a4ee-47e4-84ec-7163d80d13dc)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 22649149-0909-4156-a606-6e3dc07ae4b0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 29e497e4-270f-4918-bd5a-5bbf882f2e0f)(content(Whitespace\" \ \"))))(Projector((id f6c09f25-d070-4739-be2e-24391d451ce6)(kind \ - Checkbox)(syntax(Tile((id \ - c0012091-6db3-44c0-9121-cc0c58620675)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 35cd34ef-7e03-4d8f-a03b-6f28c4a5832c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 0d27ee6b-10bb-42eb-8a81-1ad495e733dc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3331,121 +2821,91 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ 6a9bff97-d836-4aed-b264-dd04fe8f4d03)(content(Whitespace\" \ \"))))(Projector((id c25811b2-8409-4616-af71-4d8646883f2f)(kind \ - Checkbox)(syntax(Tile((id \ - 0f850b62-9634-4c15-9cb2-4beaeaea530c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 97b91aa8-9358-4a01-a370-b8cc7951ce5b)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b40acd80-1da4-472c-8637-94b664685f8b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b9f61fc2-6b8f-472d-bbb9-c13d8b786736)(content(Whitespace\" \ \"))))(Projector((id 02710340-4540-435b-b207-c5a6048de79d)(kind \ - Checkbox)(syntax(Tile((id \ - fc74ca51-9e00-4219-8571-1bc19245a1c8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bda63abf-e1e0-42d0-8ae6-60de569fb3b1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 46e1e912-60ce-4b0f-9d91-fb0a61cb2c88)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d7f88341-dedb-441f-936d-0c8e9c209fbd)(content(Whitespace\" \ \"))))(Projector((id 9c9c90b9-8add-43d0-840f-041d3530949c)(kind \ - Checkbox)(syntax(Tile((id \ - f3cabaf5-9031-4e67-b090-c1d6fdb11ea3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c764e275-3547-4972-933a-2780a7fd9113)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b82ce438-e2a9-4322-a0df-fa64bc3041ea)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0130eb0e-950f-4b33-af4c-68731dc6a24d)(content(Whitespace\" \ \"))))(Projector((id 1a9e41aa-2f07-4ffe-81db-a305d4d8a5ef)(kind \ - Checkbox)(syntax(Tile((id \ - d5acafb6-a06c-40eb-baec-972864b4fee2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e66262a8-996b-45ed-a36e-2cfd207dce80)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ dc7e7be7-f544-46f2-87e7-933381bfae9f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 662f9c7c-498f-4efd-8c5b-30726aa010bb)(content(Whitespace\" \ \"))))(Projector((id 1c526e8a-3b21-4fd3-9384-1df6fddb0450)(kind \ - Checkbox)(syntax(Tile((id \ - 61b21df2-a81f-4e12-9f3c-4cfbe9d28e4d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 307d855f-b4ab-4571-89a8-3c8d703c10ff)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 91af9c83-c708-4550-804c-5672640c8722)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 206cf0a4-e3dc-437e-a66d-8d5541b2ba57)(content(Whitespace\" \ \"))))(Projector((id f721b2f7-179e-4c90-b864-314a5617ba5c)(kind \ - Checkbox)(syntax(Tile((id \ - 25b5149e-5eed-483d-8fb5-424e7404ddee)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ fb7667a5-fbd5-4d94-9476-9c58f8357747)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 131d6038-afa1-43de-af27-94e8be61994a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e031ace1-e462-41f0-b313-d13fb3fa4e23)(content(Whitespace\" \ \"))))(Projector((id 3af8d6d6-1625-4ca6-be94-edba1bc432e3)(kind \ - Checkbox)(syntax(Tile((id \ - 74aac5b4-e5c5-40f6-83d5-a4b9602ddfd3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a91d036b-f33f-49db-ac57-d2819ef2b55b)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ dbaf8ff2-3fa3-48de-84fa-143d3cb375e2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0d9a032d-40a9-4c84-9124-b555d6ce9aab)(content(Whitespace\" \ \"))))(Projector((id 3ffa6990-8ae4-43b5-a81f-975c084156cb)(kind \ - Checkbox)(syntax(Tile((id \ - 02e15c90-f51b-47b3-9729-952f5d84c024)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b599960a-fb8b-45a1-bd7a-1b100439b19a)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 74adaab6-6707-459c-9433-31ba553be803)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 6431c5d7-0cf5-46b6-9fbe-2430fc821f16)(content(Whitespace\" \ \"))))(Projector((id dc5a967d-23ad-456f-8f1e-f9f1c155a538)(kind \ - Checkbox)(syntax(Tile((id \ - 0e3d1562-d628-4382-8e51-04c7df97f01a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a9f017db-dc19-44e9-ac20-566970ceedd6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c144e815-e9a9-4cf8-a132-e60e8760678e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a218ce69-b451-4501-a116-1ef15aa6e5e8)(content(Whitespace\" \ \"))))(Projector((id fe282a6d-6cb9-4333-8bf4-45237dc6b39f)(kind \ - Checkbox)(syntax(Tile((id \ - 70a78c77-a989-4844-927d-a2c4943ab262)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b5de11f4-9bb2-4af3-aca0-91d79c1dcd5f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ e769888a-ad25-4581-b022-dc935f4f09b0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3465,121 +2925,91 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ 63923bdd-a54a-47be-b05a-d503994cab89)(content(Whitespace\" \ \"))))(Projector((id 5e664945-cf40-4018-8999-56cc129268e5)(kind \ - Checkbox)(syntax(Tile((id \ - fad3f363-0fee-4f36-9bdd-bd538702eeea)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5c160d8b-ec53-4b1a-88f0-0297db12dbd3)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 91ec8f34-5ac3-4058-94c3-cef906b570a8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c5bea8ae-cc49-4a25-9bac-0eedf55e457c)(content(Whitespace\" \ \"))))(Projector((id 91b64565-95a1-42f2-beeb-ac012f15ca49)(kind \ - Checkbox)(syntax(Tile((id \ - f8d36b3a-45e7-47f2-8bad-43da2a2c7c9d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f8ff1d9b-39b9-4fea-a3c0-5d8a5c0afdad)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 63b57792-c598-47ad-b96a-5e9aa9e0387a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8364636a-625d-4a8a-ac39-f7ec46bd1d53)(content(Whitespace\" \ \"))))(Projector((id dfad9f9d-3d88-4d72-877c-e695aac3ff2d)(kind \ - Checkbox)(syntax(Tile((id \ - a3f47760-8bdc-4082-94a0-ad1ef6f938c5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a83d2323-bed4-4a3e-81c3-8f3422c0c517)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ad0fdbb7-f5de-46a4-858a-fceeb5ca8903)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f973e972-9777-4bfe-ae9b-bc83ed7beb5b)(content(Whitespace\" \ \"))))(Projector((id 9b8c1c63-8378-4bc0-8986-1335633aea3f)(kind \ - Checkbox)(syntax(Tile((id \ - b18ac720-ae22-45e8-b640-9808361a1b0c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d1ce0013-199d-41bf-a45b-b83e7f6e003f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f55f1a7d-af9f-4846-8e8d-a4182d78af6c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 63b8c997-11a9-4a98-ae8b-238a85f35b6a)(content(Whitespace\" \ \"))))(Projector((id 198815fb-bd27-4c73-bcd1-bd49cd411fca)(kind \ - Checkbox)(syntax(Tile((id \ - 8d666f48-9521-4ee8-8246-8a29f3d1ca9d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ db73353b-5155-4a73-84c3-8a1a78288ae7)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7243e1de-61aa-4228-aee0-0816aa2a7db3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 744709a9-9de2-4d1d-b2a1-695473625268)(content(Whitespace\" \ \"))))(Projector((id c9a02e4e-7c56-4cf2-864b-07cbdda224dd)(kind \ - Checkbox)(syntax(Tile((id \ - 555d16f0-a80f-4345-a7ec-1a5154c82f71)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f4f1293f-6d5a-4995-8fcf-2cf578fb5946)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3fbd8ff3-e731-46a7-9b46-bfffe172c5d4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4356ac5c-6446-472a-820a-6822ae12c419)(content(Whitespace\" \ \"))))(Projector((id 41c9c0e3-d830-4fe1-861e-e8191462190f)(kind \ - Checkbox)(syntax(Tile((id \ - 06332619-ca4a-41f9-8113-3505f22a3b8d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5b0baf95-00dc-430e-ac46-86cccfaf8f81)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 46e520a7-f617-49b9-aba1-e916ff3a56a3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 05fa0865-f94c-4d75-8fc7-e490bf95f1fb)(content(Whitespace\" \ \"))))(Projector((id 3a171bb2-0570-46de-b103-c84d41490b46)(kind \ - Checkbox)(syntax(Tile((id \ - 3ba01a98-3f6a-42dd-90e4-abe6d281499b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9224221b-b929-40ea-90f4-1f3a89d9a538)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 57c5268d-480c-4a04-a875-ecb9ba3f2cbc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b991659f-6ee0-40c9-9282-6085415c3b18)(content(Whitespace\" \ \"))))(Projector((id 1dbf97e8-e103-4b66-a2de-1c261d257889)(kind \ - Checkbox)(syntax(Tile((id \ - 2b19fd79-148c-4641-ad62-f369e3438903)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9ee74073-19f2-46a1-8df2-e5c9ca118427)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f3bacf75-5500-4556-82a3-d65ed24508cb)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8c639ae6-25e1-4091-9715-3d0892c5740c)(content(Whitespace\" \ \"))))(Projector((id 10500b48-5f3f-4e07-9121-c4a1a58695f7)(kind \ - Checkbox)(syntax(Tile((id \ - 80579461-1842-463f-b6ea-42008bd4de8d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ffee62c7-c5db-4380-a36c-72da2fa4127f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 50db2ea2-f08f-48a6-817b-6f5738d14fc6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3595,121 +3025,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2774fa26-b929-489e-a9d5-e3e3ce86670f)(content(Whitespace\" \ \"))))(Projector((id b39f561d-5ef0-4db1-9a4f-f81c77807946)(kind \ - Checkbox)(syntax(Tile((id \ - b6c8ac32-9a91-4d74-9138-38e74d664fb4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6b8ff90d-80bd-4251-b44b-162936007a99)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e73cead3-65f0-4667-af65-f7b6450a80ea)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 034008ad-32ab-4a0a-8a23-89296c7f694e)(content(Whitespace\" \ \"))))(Projector((id 40111174-4b96-45d2-bffb-8e7c9aa485de)(kind \ - Checkbox)(syntax(Tile((id \ - 78447527-6be0-412f-991e-48effcadb60a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 051cc8d1-0a71-4ea0-bc69-8354d4b71615)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 87db2e74-6ab1-4126-8f9c-8c05cd47ce68)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 22156819-1acf-425d-bd5f-b121b456219b)(content(Whitespace\" \ \"))))(Projector((id 48c912b4-4ac8-4aff-98b7-af9eb268cecd)(kind \ - Checkbox)(syntax(Tile((id \ - 8c0886ae-4fe5-4b4a-9e0c-e131d7ca6e8f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d9818c41-f4ba-4d29-b23f-c597303da23b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0b3b2d61-6875-4f10-a327-745cd191d905)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9ad225ad-01c2-46be-9ac1-26e792417b53)(content(Whitespace\" \ \"))))(Projector((id 2068f188-49b0-4034-8edc-7e33191d479d)(kind \ - Checkbox)(syntax(Tile((id \ - 8d215328-e294-4041-a713-77661089cb44)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e51fd538-b4bf-4cad-bc57-19f8a4041791)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cb23abb4-0fda-473e-b23a-ad1f5126a2ae)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2704f4c8-04a5-45a1-ba56-633f3f3571b5)(content(Whitespace\" \ \"))))(Projector((id 23e52cdd-5f4e-47a4-84b8-033ed159b5c5)(kind \ - Checkbox)(syntax(Tile((id \ - b351c720-0434-4f79-ba36-fd30b5b8082c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c12e2655-c275-4184-ade0-16e5c9717d4c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5e82b07a-830b-4d68-a5ec-bfe412eda177)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 92cd4466-22af-434b-b8c4-0d7faaf7d8d8)(content(Whitespace\" \ \"))))(Projector((id 2d11d2c6-3262-4986-9de6-0c80afda790c)(kind \ - Checkbox)(syntax(Tile((id \ - 0cba2ff8-42a2-4543-948a-9ea66fad7a46)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1c85ae9c-0813-4f19-9f04-f5cba126c63c)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 17b3fe74-f145-48db-bc58-bbbdeb7318f8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 518a5517-9218-4da2-9ff2-54f227835326)(content(Whitespace\" \ \"))))(Projector((id 7c3d83df-20ae-42fe-bdc4-815211b269ad)(kind \ - Checkbox)(syntax(Tile((id \ - b4bb8e1a-1155-4808-b081-d250938ea0bd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a7adb0cb-c5ee-409f-b2a6-54afe6547eee)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e606c676-b3e7-4163-a884-432e568fe6f5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7c4dc03d-4101-48c1-b02e-3a624054392b)(content(Whitespace\" \ \"))))(Projector((id f9676ac1-ccf5-4aab-8001-8008c8cb6577)(kind \ - Checkbox)(syntax(Tile((id \ - d50b1e44-4175-4274-8f57-9855c739ade6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4c6bd8a2-a02b-4db1-bc05-5261d454003a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b93876b7-5608-473a-bc6b-0d2d77c65f04)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b6aec2b1-01c0-45ef-8d60-423c149251a1)(content(Whitespace\" \ \"))))(Projector((id 55df22f6-6e1e-4feb-92e6-cf150881bcdc)(kind \ - Checkbox)(syntax(Tile((id \ - d1aee544-dea1-400c-bd38-8d09e63b93b0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b88c92a5-2f2b-485d-9f43-f28c8344e442)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 059570a2-7575-4fb1-9ce3-dbbabad533e5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d6491719-67e4-43b8-87d8-2e6b5a9a7472)(content(Whitespace\" \ \"))))(Projector((id ba329ac8-0666-46a8-9142-6b602ddfe622)(kind \ - Checkbox)(syntax(Tile((id \ - 74ad2779-767f-4d89-9887-71435c0048a1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 707d6914-ddc6-493e-b6f3-ff8edb548df7)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Secondary((id \ 60d9947e-95ec-4d08-bc08-b8f916f9d9f1)(content(Whitespace\"\\n\"))))(Secondary((id \ 3287ebe1-cb6d-43c2-8f53-bca2b91fc1bd)(content(Whitespace\"\\n\")))))))))(Secondary((id \ d7f7c15b-6759-495d-9038-9269fbf66eae)(content(Whitespace\" \ diff --git a/src/b2t2/slides/errors/B2T2ErrorsUsingTablesPart1.ml b/src/b2t2/slides/errors/B2T2ErrorsUsingTablesPart1.ml index ee906fbcaa..1fcaf5cd9f 100644 --- a/src/b2t2/slides/errors/B2T2ErrorsUsingTablesPart1.ml +++ b/src/b2t2/slides/errors/B2T2ErrorsUsingTablesPart1.ml @@ -374,13 +374,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ e35243fd-39c6-4282-8dde-390233702726)(content(Whitespace\" \ \"))))(Projector((id f2d1598a-3fd8-401f-b1f9-b806ee16fb57)(kind \ - Fold)(syntax(Tile((id \ - 48ed7354-09dd-43b5-97cf-3de3cbb3e103)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 9963d03f-e703-4278-99ee-2ac8dc021884)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 9963d03f-e703-4278-99ee-2ac8dc021884)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 7051b18c-afc9-42aa-9804-61ac3f3770cf)(content(Whitespace\"\\n\"))))(Tile((id \ ee0b482c-04df-40b3-b714-c19128b9b4cb)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -584,7 +580,7 @@ let out : string * Haz3lcore.PersistentSegment.t = fb0f0a64-2640-4120-ae2f-589e578a1e5b)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - b50f34c3-c6d9-427f-8183-b948574204c9)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + b50f34c3-c6d9-427f-8183-b948574204c9)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 0df6f473-8ca9-4001-a6f1-0283bd5907f7)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -952,132 +948,98 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 3e2b9914-0f61-49a7-a9b1-c90ee8720a5a)(content(Whitespace\" \ \"))))(Projector((id 1fcbf699-2bf3-431b-9084-27b7387c8080)(kind \ - Fold)(syntax(Tile((id \ - 28022d2b-e4d8-4ff7-bc4f-164250a8bad6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 0fa84c8b-1e24-4c77-a142-005992e66a2d)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 0fa84c8b-1e24-4c77-a142-005992e66a2d)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ e66aa98e-75d2-413f-a167-25a733d241ef)(content(Whitespace\"\\n\"))))(Tile((id \ 5ba89f9d-3069-4526-9134-46656ede5202)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - c9ef1f1b-f1d4-4195-9992-8ae254a38d12)(kind Checkbox)(syntax(Tile((id \ - 211b4c4f-fbd1-443f-aaea-7c84a2cb796e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + c9ef1f1b-f1d4-4195-9992-8ae254a38d12)(kind Checkbox)(syntax((Tile((id \ e7b4251d-c50e-4276-95c0-a64def6ce706)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8dc2b1e4-c4c1-4079-a7cf-3f3de443c2d7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 126a6a17-2deb-4379-8e47-acf6a74bb115)(content(Whitespace\" \ \"))))(Projector((id 4216f93b-9424-4e9a-8296-b3f186753c47)(kind \ - Checkbox)(syntax(Tile((id \ - ee1975ea-5706-4e2d-8dfd-43826917c48b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 05aa5c64-ed13-42a7-b493-b050cc14cd2c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 65f93758-e99d-4afd-ba72-030dcae68b90)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e982182c-4447-4e88-86aa-0c6c3f5dd7da)(content(Whitespace\" \ \"))))(Projector((id 74722225-206e-4490-989b-fddded2a8af3)(kind \ - Checkbox)(syntax(Tile((id \ - d4a5fab3-08c6-46f9-a5fd-ec98291d4a87)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 883c222f-2218-4c6a-be4d-0717f0e4d238)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2cb2dc36-4d6d-4eb8-a262-5a174689c672)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 12e91a21-a1f5-4006-b8c4-305f01bbc665)(content(Whitespace\" \ \"))))(Projector((id 110fb735-c65d-4f39-b05e-33b20a9a9691)(kind \ - Checkbox)(syntax(Tile((id \ - c97116e0-9fb2-46b3-8691-1ce681e97279)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 01bcdcb9-b5fd-48f7-89fb-862a1fe5af8c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 50cc4c6e-523c-4bfb-9e91-6fbde12d941b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 509a02fb-982e-4d94-a72b-e7b1406a9775)(content(Whitespace\" \ \"))))(Projector((id e0f145db-dca4-45eb-9d82-dda8199f3482)(kind \ - Checkbox)(syntax(Tile((id \ - f9e3d15e-e16d-4896-8405-893856226bfb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4e354ec5-f447-4b28-abd5-1ef3b419e980)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c84df6ee-b31f-44a1-9231-dce86532ba70)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3d6697a6-67ae-4b25-be05-40e8acedeb1d)(content(Whitespace\" \ \"))))(Projector((id 85f659f7-61ab-42e3-91b1-a2afa879ca95)(kind \ - Checkbox)(syntax(Tile((id \ - 07446ad2-37e3-4e04-9d0f-e7761d83b93c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3780f278-e5df-4998-9808-bbcbccf4e502)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 63b4fcbc-993c-4be6-b6ab-963a152c091a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 999d9dc1-d96a-48ab-a425-4a954522800d)(content(Whitespace\" \ \"))))(Projector((id ef3c8661-1f0b-4d3c-b011-c37714c2c0df)(kind \ - Checkbox)(syntax(Tile((id \ - 9899a37f-2ed3-4986-86a1-3297bd6889a7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6fa3251b-465a-412a-9969-b40ae1138c6a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f4cfc7c2-8271-4a1e-bcc0-b2da93af50c7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 29fc6f4a-c193-4c81-b1e8-ed8f6bd11bee)(content(Whitespace\" \ \"))))(Projector((id edbec2d8-7836-4cea-abe9-5afe4b36670a)(kind \ - Checkbox)(syntax(Tile((id \ - a0061653-9c12-4b8b-9632-0cb446a2779b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 191f0141-b9b6-44a1-820e-642ef69709cd)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 87581518-0922-43bd-8ca5-17901fe325e3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a428b253-d980-4472-b75d-5c731cca0695)(content(Whitespace\" \ \"))))(Projector((id b4413ae0-cd8f-48c6-b3ce-683d4f9043ed)(kind \ - Checkbox)(syntax(Tile((id \ - f3396967-f4fe-44cd-90ea-7ad24727f74a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5047f1f5-e54b-446e-a7c8-3c29497153b1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 145195d7-abd3-4afb-8ea5-b229d92e1917)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a7d282bc-430a-4509-a024-a3552d5b2ce9)(content(Whitespace\" \ \"))))(Projector((id e4f795bf-66ca-4f61-b32a-799de822c8f2)(kind \ - Checkbox)(syntax(Tile((id \ - 441e6b3e-428f-4f70-9e44-2fc26801b34c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 86bdc782-156c-4656-b335-795b3305dec0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 69b6a60a-13a1-4ae2-8aa6-e3165233ae1e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1085,121 +1047,91 @@ let out : string * Haz3lcore.PersistentSegment.t = c769eb3c-f9bc-476a-bb1d-9051f7416de5)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 94cff674-b48d-4115-bd05-98219d6cc94e)(kind Checkbox)(syntax(Tile((id \ - 71a7ceea-30ac-4fd1-b36c-39cf264abef1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 94cff674-b48d-4115-bd05-98219d6cc94e)(kind Checkbox)(syntax((Tile((id \ 9cf1735c-8634-408f-a193-4f8e4bed417f)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3d428fdb-44f0-4218-9552-8a2a3df08f23)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 6d5f1ce5-ce4f-45ed-a954-8c607632d4e5)(content(Whitespace\" \ \"))))(Projector((id fb71ca86-f9ca-4898-b81f-3d81a98a58e9)(kind \ - Checkbox)(syntax(Tile((id \ - 33df11ad-a92b-41fb-afe3-1d7db861485b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b6166e39-b99f-456e-b7d8-d29d4a1eef21)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d03b1309-c405-4974-a8d9-7e5449379770)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e5517f47-04ab-469e-8630-6629e5bc24b2)(content(Whitespace\" \ \"))))(Projector((id 185cd246-66a7-4abc-9287-7cebee6fc179)(kind \ - Checkbox)(syntax(Tile((id \ - 79e71717-16a0-429c-a331-da04d0979ccb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b98f6f95-c3f7-4099-882d-4a46c7dcc6ac)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d1f856b4-ea46-449e-8d38-78b7b0b31256)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ afc6566b-588e-4a3d-905e-936f5f0b965b)(content(Whitespace\" \ \"))))(Projector((id f9035fd9-8728-4dd1-af9f-588934929bfb)(kind \ - Checkbox)(syntax(Tile((id \ - dac3448e-498a-4cab-a6a7-d353d9ce960f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6feea431-9608-4622-82a4-56ee6bca7c94)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f5dc3e6a-0a37-4d8d-9100-f85fc2d25746)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 24d6e423-6c22-41ee-b91e-8226cdfe4f5b)(content(Whitespace\" \ \"))))(Projector((id 76690432-a9ef-4505-90c8-e74e73e26df9)(kind \ - Checkbox)(syntax(Tile((id \ - bddaa4c3-e234-4645-bf9c-d3251a52510d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1140b7a5-15a0-4462-9249-d937ff17f92f)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9a2d5c1c-b98d-4bc7-99e6-0ded62d22277)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1a07576c-0085-4bd8-ad4d-d4aa9f022c13)(content(Whitespace\" \ \"))))(Projector((id d7bb5cea-0935-4c3b-a0c1-e6f306ad5968)(kind \ - Checkbox)(syntax(Tile((id \ - fe75eac3-271c-4b7d-877e-d0edac0ba842)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f3267229-c302-4f98-9b0c-54296bfaaa31)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0996c7c9-780c-432d-bcfb-2cb2db8d2603)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1b9d68f0-e704-4ac0-b4bf-13f869ed7699)(content(Whitespace\" \ \"))))(Projector((id 30cb0257-3ab2-42de-be0a-f42f79b5a477)(kind \ - Checkbox)(syntax(Tile((id \ - 906954aa-5add-4837-88dc-e294a7e19a3f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4c5bca7d-bac9-4feb-94a2-d650e4c5989b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 13239bb5-d21b-4875-8573-b745987bdf38)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 01ccfe80-75a5-411e-bf1d-dbcae37e7e8c)(content(Whitespace\" \ \"))))(Projector((id 7413af88-7a85-4a70-a75f-747c8bf641c1)(kind \ - Checkbox)(syntax(Tile((id \ - c17f37d0-1719-427f-8c31-013a41755435)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a1d5d4ab-3d81-4ffa-9a3c-53479dbc63b6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f6b4592a-b185-4147-b549-9b96d5ac8c55)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ dd808767-14ed-49ad-9f65-96f25f06add7)(content(Whitespace\" \ \"))))(Projector((id 65733cd6-627f-4bae-b425-716500705270)(kind \ - Checkbox)(syntax(Tile((id \ - 98350b67-0d91-488a-9079-76e6d505edbb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a72e9bcd-883a-471e-8fa2-f9f439f560cd)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1296fb2f-913f-42cb-8a54-a580d489aaaa)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ bc7e81af-2412-4bb5-aa06-dd27929f39ad)(content(Whitespace\" \ \"))))(Projector((id 8e04aaca-7ef6-45f5-ad7f-5d48ac3ba263)(kind \ - Checkbox)(syntax(Tile((id \ - 9afc8063-f3e8-4ad3-9b69-847ed458d864)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8b1f1ad4-616f-4414-9bf8-eaa7990f35e3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 0931eb00-30fb-45f6-a589-d497f64089ab)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1207,121 +1139,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 0025f3d3-601d-4b2d-a426-e80bd7b6f682)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - df17ceb4-2e45-4fb5-8112-d608368afed4)(kind Checkbox)(syntax(Tile((id \ - 7f860c3f-e554-43b1-810e-a01c7711b5ce)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + df17ceb4-2e45-4fb5-8112-d608368afed4)(kind Checkbox)(syntax((Tile((id \ 659d6d74-3207-4cd4-9008-0cc0fe81d4fa)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1446f193-fd18-41ec-99db-b5dc8e2c624e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c99bd91b-fe25-46aa-baf1-998fd95c422b)(content(Whitespace\" \ \"))))(Projector((id 9f3fe2ed-fc0c-454e-8776-14483729a78e)(kind \ - Checkbox)(syntax(Tile((id \ - 8d190455-3b68-4ce8-aab7-d501c3c8f0f2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 360bfb87-40d0-4469-9210-98171d347033)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a1c6071e-94aa-45a9-9414-8e44c7a0e5aa)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 193c69c9-59e7-41ff-afe4-3dc789d9e9a8)(content(Whitespace\" \ \"))))(Projector((id a01bc8a5-b634-4009-a9ca-1faeff4eb914)(kind \ - Checkbox)(syntax(Tile((id \ - 4a0fd274-6423-4a74-b93b-db0b7e8024eb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3ba23f68-8615-4f74-9f35-83a08388e315)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4b44c2eb-e90d-4ce3-b679-f74fb92c77ac)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2bfce56f-fd3a-436e-8339-352753b6d573)(content(Whitespace\" \ \"))))(Projector((id dee458f1-d2e9-4797-8df8-d735af2a6b52)(kind \ - Checkbox)(syntax(Tile((id \ - ef0753aa-3565-468c-baad-f47c6637a971)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ce81ced3-96a6-4081-8a4d-c1ee5db5dfbb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 58fbb8b5-9e1c-47c6-a234-8e628f657525)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 63de800c-29f3-4db6-874b-224c31690240)(content(Whitespace\" \ \"))))(Projector((id 1666d48a-9701-4e6b-a877-763064f02952)(kind \ - Checkbox)(syntax(Tile((id \ - 5b08c3e4-a967-4478-ad7c-f9b76b94ef90)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b1e47b1f-f2f5-4316-858e-31743c48decf)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 99f8a33d-9ccb-489f-99bc-d5859031d7e9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 253a8543-485e-4a89-bcb5-ba5495127bcb)(content(Whitespace\" \ \"))))(Projector((id 4e68706f-7e90-48a9-ad39-a5a5fdaa733b)(kind \ - Checkbox)(syntax(Tile((id \ - cf439e34-d3cc-44bb-9ae5-540c476df5f4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9ed71151-1e64-4980-9aad-ce22e1204f1e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ffbb2bd5-463b-4305-979f-d7cf8619e174)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 98f2260c-f1b1-473f-b8aa-a71cfc4c07ab)(content(Whitespace\" \ \"))))(Projector((id e957cb25-9085-4d3c-b874-eb0d9996b2be)(kind \ - Checkbox)(syntax(Tile((id \ - ac7ea7e5-3a4e-424e-b2be-80b18569f536)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cfe1e22c-70e0-4d19-8cde-339822ea3ec3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ececf0c5-862a-4ce6-b930-7f20ebbfac2e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0db435c5-a1b7-4d19-a998-37d64ba9fc59)(content(Whitespace\" \ \"))))(Projector((id 5f806642-e483-4474-b2c8-ec646db64494)(kind \ - Checkbox)(syntax(Tile((id \ - 1515d0df-97af-4a38-b68a-5293673ebeea)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3f5189e3-b225-461c-9a3f-6c8826b43e8d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d68fb556-e0ba-4e17-8e00-0a7147928014)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e9aad24d-46ee-4309-83b6-a7176c7829a4)(content(Whitespace\" \ \"))))(Projector((id 10f98944-685e-4a04-851f-202d72c0f4b3)(kind \ - Checkbox)(syntax(Tile((id \ - 179211d9-46ba-484f-bed3-34c4ce916618)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bdf91627-1bbc-46cb-87fb-d9a994586542)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7fef68f1-460d-4b9a-b66d-5183b24bcc1f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 897d8b1c-54f5-4657-ad07-f848f142cf4f)(content(Whitespace\" \ \"))))(Projector((id cc015beb-5d23-4d39-a714-eb13d95c9580)(kind \ - Checkbox)(syntax(Tile((id \ - 57eaff14-6e70-48ec-a0b5-8730234c7fd9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8528dbc5-7e07-401b-9fb1-e5aba3de6d89)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ bd75215c-9589-484e-8d3f-172258bc54e6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1329,121 +1231,91 @@ let out : string * Haz3lcore.PersistentSegment.t = d9dac293-5486-4de6-96d2-6e8fc3aff1b2)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - b574118f-929f-46dc-aa6b-3d4daf586889)(kind Checkbox)(syntax(Tile((id \ - 60fb9d03-4e06-4484-a40c-2563bf805c89)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b574118f-929f-46dc-aa6b-3d4daf586889)(kind Checkbox)(syntax((Tile((id \ e306caa0-d9d5-411f-8ac7-bb97926a8ec6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fcb4b33f-81fe-4eba-a847-1eb849985547)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 694adf0e-1e4c-4c64-b5f9-ff182e46a0e1)(content(Whitespace\" \ \"))))(Projector((id da81b21f-122a-4e2e-966e-2e07005a1197)(kind \ - Checkbox)(syntax(Tile((id \ - 84129b78-aee0-43b5-9d62-a99701eb0994)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a548262b-f378-40c7-9639-a525b182d4ba)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c9f574ce-2036-4571-95db-03c21ea4c331)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 16775b97-e445-4d99-968f-464a0f1463ce)(content(Whitespace\" \ \"))))(Projector((id e5035427-42a6-4f83-8cae-2d4f8ad3a68e)(kind \ - Checkbox)(syntax(Tile((id \ - a8db38f0-5cfe-4054-8feb-bd09dec3976f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5f3dcc7a-d354-44da-9fb4-3e9ac5953e46)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 62aee44d-79c4-4cfa-bc4b-ae83019adc00)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 12b5f19e-6fe6-42bc-bc2f-0869dd8e4a26)(content(Whitespace\" \ \"))))(Projector((id 365be938-8dcf-4456-959c-3c40fb651733)(kind \ - Checkbox)(syntax(Tile((id \ - a54bddf1-5395-4bb1-831b-3c2d338447bd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 43c5afb3-661f-43cf-94de-6c1e95f3e673)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3ef4986b-294b-4c1c-acf7-955a106bea22)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 327e1087-65d5-470d-9ce0-edde632c4f66)(content(Whitespace\" \ \"))))(Projector((id 298136df-9fb7-45d9-8930-b7159c3b9393)(kind \ - Checkbox)(syntax(Tile((id \ - ba456928-c814-4870-a5f2-40832d078312)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bfb496a8-fa10-4838-b11a-6a077481b561)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7ed74c01-c4db-48a8-acaf-3ba2108a3f7f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d969eafa-3923-48ec-bedb-8975f25da34f)(content(Whitespace\" \ \"))))(Projector((id 1e6084c4-bba9-45e3-b25c-37031975a048)(kind \ - Checkbox)(syntax(Tile((id \ - f2c4c6ea-54c3-4ef1-b203-d127d324666e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f77d0f12-921a-41e8-8c7e-16cf4b0c38f5)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9e11b3c7-38bb-49b7-a95d-eabc5a52330b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e381d127-7ab1-457c-8759-dc61a51a28ef)(content(Whitespace\" \ \"))))(Projector((id 41711e50-6b7b-45fa-8e49-3e42b6218661)(kind \ - Checkbox)(syntax(Tile((id \ - 2fd88a33-de07-4194-a546-88022200d400)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 14973016-7d6d-4ab8-b7e1-6c456c2f28f8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1bc6da11-3203-4b81-b5d3-66a2589cd2f6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b8b3fbbd-a7cf-4a85-9468-8224cc9e36ac)(content(Whitespace\" \ \"))))(Projector((id a3e5564b-82c6-4184-aa55-759e035f9a61)(kind \ - Checkbox)(syntax(Tile((id \ - d48470a1-48ad-421a-a563-c88ee999f39f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 98db2f66-612c-48f3-a8c7-9c060e6cc932)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ecc1e13f-7024-43f5-b779-056f41f58c98)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3b184ed8-1027-4172-ac89-0787f44fcd38)(content(Whitespace\" \ \"))))(Projector((id 33f2e674-f7de-4017-8c0a-e5d3b1422433)(kind \ - Checkbox)(syntax(Tile((id \ - 6d75f133-0e1c-4094-b867-c301df5fb31b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 555470da-e067-45e5-8dbc-62918bc864d9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1d9224b8-095c-443f-ad51-a018078a09ca)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 425075bd-e644-4946-9c73-d99f7af7587c)(content(Whitespace\" \ \"))))(Projector((id 1ee878e0-012b-4c8f-9438-6476fe2cf906)(kind \ - Checkbox)(syntax(Tile((id \ - df170d22-4eaf-45ef-b01b-55da2ab523c1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cdbc1d23-1f93-4296-9e92-7c8d7991d5cf)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ a101b106-ff99-4c3a-9479-64afcb12259a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1451,121 +1323,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 5d8d6823-e57b-41e0-a477-e9e761e4d42c)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 37fc4c24-32ee-4b38-acf2-c28c2201e44b)(kind Checkbox)(syntax(Tile((id \ - a49612a8-e40a-4ef5-9f65-705af90f2843)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 37fc4c24-32ee-4b38-acf2-c28c2201e44b)(kind Checkbox)(syntax((Tile((id \ 77a0229c-b429-44d0-8341-88be0f0f78b2)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6edcec06-e012-43f6-bdda-b0cb437f8ca3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ facad2cb-930a-4905-afc6-f1458b8d34d9)(content(Whitespace\" \ \"))))(Projector((id a67ee6dd-77ce-4618-b7a4-6a0e045caabe)(kind \ - Checkbox)(syntax(Tile((id \ - 045f610b-9f2c-4874-84d2-856721f4b8cb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1fa33986-299d-41fc-bcc0-98a66a717a82)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 21627a1b-1e9e-4860-9424-bd5cf4a3096f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ fe7dc7ce-2709-4b7d-9b4d-250ca015dfdb)(content(Whitespace\" \ \"))))(Projector((id da8ebf48-fa03-41d9-be00-3eab2612affa)(kind \ - Checkbox)(syntax(Tile((id \ - 4059112b-60f6-4c91-a112-85b8e4a17728)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d93cdca1-1142-4277-ae00-6e87314f1a49)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3c65ba04-716a-44e0-aef2-ec3b99024157)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 221138ae-4208-490b-9073-af6762711623)(content(Whitespace\" \ \"))))(Projector((id f3317100-a90d-45b1-9666-4c0d01b57b7d)(kind \ - Checkbox)(syntax(Tile((id \ - aea443bb-92db-4293-ad38-f8ca43107435)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 104a2876-0fa4-4f51-9103-9f613c20c6a8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 10cb6379-4699-4793-8bca-75cf0e4a2b0c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ fc2ec3a6-b3ef-430a-9e60-83d2b814502d)(content(Whitespace\" \ \"))))(Projector((id a7fe2857-8f7c-4d2d-ae01-271d290318a9)(kind \ - Checkbox)(syntax(Tile((id \ - b3a6ff0f-187e-418a-a87e-6a4fed3229a3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3370426a-c559-4cf0-a26f-a129e1868f68)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c99a744b-67d4-4d59-abb9-ca9c37916f0d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7a81b36f-4617-4266-8091-92fe886fa756)(content(Whitespace\" \ \"))))(Projector((id c2771718-a0f6-4a7b-a379-2a38e50b7b56)(kind \ - Checkbox)(syntax(Tile((id \ - 0b54b2ad-7b5e-44be-8b8d-479f113e72a3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bd862ceb-5ad1-4ab5-989a-118e979ae514)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 91a28528-cf69-4a2c-8abc-72a37ee224fe)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 57ba7b99-2d53-48e7-a3b2-f0fafa76382c)(content(Whitespace\" \ \"))))(Projector((id 42d752d0-e724-4c1c-afe7-8331c1b66b23)(kind \ - Checkbox)(syntax(Tile((id \ - 2616c278-1fdb-40fd-9656-498732664613)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9ed56fe3-f154-41b4-b9d4-d065442392cb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f4d52867-d901-4435-916a-246a3bfd903f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 870aef48-647a-4c5c-a4cd-8e4addb93460)(content(Whitespace\" \ \"))))(Projector((id ff6d1027-c27b-4833-a914-eb575fe3dd0c)(kind \ - Checkbox)(syntax(Tile((id \ - 29731242-f7fa-4535-addc-1e4f95e51378)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5055d18b-16e3-409b-bb84-2efdc3801646)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ab19b847-9533-4a3b-8b39-b20207871e09)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c93bf8b2-d505-4b12-8f20-30d1be6cd8ec)(content(Whitespace\" \ \"))))(Projector((id 6d2f3852-b8a5-4e53-9202-e2a7e8c63902)(kind \ - Checkbox)(syntax(Tile((id \ - 717f8e8f-469f-496c-bf85-9730b1105f4c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 425d3fcd-efa1-45a9-b9ee-017a7835e631)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5b09e705-fa17-46e0-ab32-b368c555caae)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 56857ad0-e04c-45b9-8495-a6e99c64e2d0)(content(Whitespace\" \ \"))))(Projector((id 44051dc0-ea28-4433-b17d-dbff9d126098)(kind \ - Checkbox)(syntax(Tile((id \ - a1c1a739-c494-438e-9302-02e6466e22d3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a6d3df7e-8125-4de3-a219-ac1c9e0f9fa2)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 2e11cbe3-cfff-485d-83b5-c0a64aab87e8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1573,121 +1415,91 @@ let out : string * Haz3lcore.PersistentSegment.t = b95c0c76-00f2-46fb-a9dc-14477fa3a512)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 1fd9daa9-501c-4a49-aafe-b9a8b8e4c315)(kind Checkbox)(syntax(Tile((id \ - bfbb498a-3dfe-4c8b-9438-e4aab90a0ce6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 1fd9daa9-501c-4a49-aafe-b9a8b8e4c315)(kind Checkbox)(syntax((Tile((id \ ca3f2880-8b45-42d0-912c-2f770954644f)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9c8a6c75-182e-4afb-b642-36248a1ecc93)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e51eaa07-fe16-42fd-b2a6-15858aec09cf)(content(Whitespace\" \ \"))))(Projector((id 0339d6c2-becd-4dcf-aa20-ea8952758530)(kind \ - Checkbox)(syntax(Tile((id \ - 8c97bae1-19d2-4827-a30c-ecbf4b0877b1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7bcff584-871b-481d-9933-3939e157f12a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f839b7a9-118b-447d-ab92-eb5af7422e81)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2bc58285-caaf-4aa0-8c44-30e255656e84)(content(Whitespace\" \ \"))))(Projector((id d4e67422-3261-4d62-a995-988a448eff88)(kind \ - Checkbox)(syntax(Tile((id \ - c14c261e-68d9-470b-b929-7d8f11a74941)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1ea71a55-3469-4030-bccf-d1f1914cd04a)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 40e9830f-2cdb-428d-a500-83977f5b4e72)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 6e3c1994-251d-49f1-988a-525dc9c86ac5)(content(Whitespace\" \ \"))))(Projector((id 867e8431-658f-459f-896d-2336a5e57f6b)(kind \ - Checkbox)(syntax(Tile((id \ - 955f43e6-44c5-45b9-8e08-2d2f21e800f9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 379ea0e1-ae4d-4f2c-baff-f4d550eb538c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a498a0ba-0449-41d4-baf0-22bfb5d16239)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 39c107e9-ec53-4816-b1bd-504fb2543577)(content(Whitespace\" \ \"))))(Projector((id 82f94ba6-71f7-4971-8571-89a3539315be)(kind \ - Checkbox)(syntax(Tile((id \ - d808164f-7ec8-480a-9be7-360124d87b6e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2b1a7aec-2285-4c67-92db-cf9619850215)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 900c9d40-915b-4b8d-bf20-1561fd371652)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e717593b-2955-419f-8190-012157af2477)(content(Whitespace\" \ \"))))(Projector((id 0cc1bf01-de01-48ac-9d0e-233b6c7dcdac)(kind \ - Checkbox)(syntax(Tile((id \ - fbcc8560-b343-483d-bb25-00879609765b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e1b6abd8-0dd1-49b6-a9d7-71469d8edae2)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9a29ecfe-c5f5-4e2f-a44e-0cbc30cb1fb9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ cfd095c5-d123-4935-a8e2-979b72a7f444)(content(Whitespace\" \ \"))))(Projector((id f9e333f3-2e76-4ada-b10c-3824d23e138f)(kind \ - Checkbox)(syntax(Tile((id \ - 8a6fa9d5-d752-41f9-9728-5a5537b5abd9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a2430b78-4347-457f-9ad6-f9240cbef3cb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0c4f66ea-9f52-4b04-9dd2-c16a8b36e7b9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ad7e42de-5664-402d-9079-46aedef92170)(content(Whitespace\" \ \"))))(Projector((id 324e9120-d57f-423c-8c9f-5c99a8477aaa)(kind \ - Checkbox)(syntax(Tile((id \ - c2ad69cd-453e-453d-93ea-e50cd6e92cf1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9facdded-9ad2-4de1-a45c-e0ccd02c2dce)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d3695702-c27f-4835-8368-ba9601a2207e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8871b73f-ac55-44d9-a7d5-0575345c4217)(content(Whitespace\" \ \"))))(Projector((id 171f7f2c-f3a8-41fe-9fbc-08e5479c49e1)(kind \ - Checkbox)(syntax(Tile((id \ - 45d2bccd-fc19-46a3-ae41-138c1c158e33)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d4b6c597-de2c-4ad5-8c0c-4c824c0c8946)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1f5b5d12-7db9-4b9d-a226-a84c55d3454c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8329d26a-be47-4a68-a382-4bc02f40f7f6)(content(Whitespace\" \ \"))))(Projector((id b6e522f9-6f46-44a3-8872-c0f5b56ed1bd)(kind \ - Checkbox)(syntax(Tile((id \ - f48f8022-954c-4b46-b67e-1541786ac3d1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 77ba1e83-b6ee-46b6-8b2a-2be7dcb51f52)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ ccb66c45-c201-4192-b994-23ee9e451d15)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1695,121 +1507,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 7cb8aa85-1b73-4ea1-9616-7fcd29df4a9d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 7843cde9-b3fa-4e58-a221-869482290960)(kind Checkbox)(syntax(Tile((id \ - 40f7d2a4-5321-4290-86c3-3e548959779f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 7843cde9-b3fa-4e58-a221-869482290960)(kind Checkbox)(syntax((Tile((id \ 2c323b97-acff-4075-a39b-35e97de9e2b5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5c4609e1-55b2-48aa-8684-fccae608413f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ bbdecd5c-398f-4077-9fe1-088c7a48b07e)(content(Whitespace\" \ \"))))(Projector((id d95af750-720b-49e2-8970-469ee5bd70e3)(kind \ - Checkbox)(syntax(Tile((id \ - e65bbdc5-0903-4146-943d-61cd3f9de5d0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ aa5e47e4-3cbf-400e-93b6-5f992cd394c6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5d3f7d46-11e5-4cda-8660-1c08d1431eea)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b52f5b42-ce0c-490a-9d93-e20e75887c34)(content(Whitespace\" \ \"))))(Projector((id ca786d30-159f-427f-b4d6-51ce0e9cd857)(kind \ - Checkbox)(syntax(Tile((id \ - 5bb41e53-68d7-494f-afa3-f3b8599db4d4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8411b13f-9498-4a02-8427-2a6cec12b273)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ae80509a-e9c0-4e97-a841-162401fbdab9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 58bd11db-23b7-4d72-a01a-b5f57bcfe6b1)(content(Whitespace\" \ \"))))(Projector((id 1e067836-aa87-450f-9719-c5169d66b544)(kind \ - Checkbox)(syntax(Tile((id \ - d881c4fe-9310-48c5-8ac4-6dc08566cf21)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c2af65d8-3b3c-4d78-948c-d0448de1639e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f90bc159-201d-4a99-ad77-eac9085adf0d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 41fbca95-e713-4d64-a103-4e0fbf3eb816)(content(Whitespace\" \ \"))))(Projector((id a61b2c3b-f9f8-4aa7-827b-2af1e5f6f8cf)(kind \ - Checkbox)(syntax(Tile((id \ - f1e09978-07ae-46cd-9493-af9c97f69381)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cdf7b960-5d46-4deb-b074-c767e367ac69)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 47bfb15a-4075-4be3-9142-a0d24589787e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1587567c-d6b4-4b59-8f08-469d260d213e)(content(Whitespace\" \ \"))))(Projector((id bf10e6af-1fba-42e3-89ea-a471e853aea3)(kind \ - Checkbox)(syntax(Tile((id \ - 15cd63bc-165a-4791-ac19-f45ada41b312)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c45cb536-d441-4c52-9589-2460b3cc5cc5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e02ba151-fc9a-4122-887b-45f4ffbfb2cd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7e68bc32-85c3-4b57-be1b-04200403b310)(content(Whitespace\" \ \"))))(Projector((id ce30ca4e-37b8-4992-827e-5d5b1a98bc36)(kind \ - Checkbox)(syntax(Tile((id \ - fcc4a7cd-0a70-4ad0-ad99-1426f4cf07cb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4943b502-4555-4b11-be0f-b4173cb581de)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 649f2f8b-85ad-45f3-8536-6f3095e2f964)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e23c1719-667b-4e03-a7a0-aa319795bbce)(content(Whitespace\" \ \"))))(Projector((id 966a4ef2-1479-4b0a-9bfa-071522944814)(kind \ - Checkbox)(syntax(Tile((id \ - ceffd9f8-9bbf-40bb-813d-49f3eb571d19)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 72db4bc2-d30c-44f8-9db7-128bf435cc8c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1cdd28e5-8256-4b5c-9016-585fe2863953)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 00f6680d-d382-49af-bccb-35f4e57d3d9e)(content(Whitespace\" \ \"))))(Projector((id 6fd7ddb6-e81e-432a-a4e7-8bf38b290fb1)(kind \ - Checkbox)(syntax(Tile((id \ - 4fe930b5-aa6b-4a87-880a-9b68340742ea)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ffd05985-691e-4d39-b5e1-ed6e48f4eff6)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 69efb00b-1656-48d8-acb2-90b651fcb777)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 55618335-7e2e-4a23-86a5-884bc2443296)(content(Whitespace\" \ \"))))(Projector((id 53e0ad46-f410-4109-8bd1-4848dd889914)(kind \ - Checkbox)(syntax(Tile((id \ - ba2e60b2-3f54-41b0-a5ec-e8d664c280b3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ fd07503a-3359-4215-abab-d2b5dea36430)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 33139cc5-87fb-430e-af21-b33891200a1d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1817,121 +1599,91 @@ let out : string * Haz3lcore.PersistentSegment.t = a69d6a47-aa1d-47b2-bc5f-f40f7ae44b1f)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 9f1746c5-81ed-4efd-b044-f7355eb77a4c)(kind Checkbox)(syntax(Tile((id \ - 64e894fd-e0d8-4387-a691-83844e4c0d64)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 9f1746c5-81ed-4efd-b044-f7355eb77a4c)(kind Checkbox)(syntax((Tile((id \ 8b87fcf7-5a30-4bf6-a5e0-179df6c98666)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5df597c8-c760-4404-8c16-d661947d7d04)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e2e0f138-14d8-45ac-8a94-b03b4038fac6)(content(Whitespace\" \ \"))))(Projector((id d8f55b7e-f79b-4a67-b752-0c95efddd960)(kind \ - Checkbox)(syntax(Tile((id \ - 38906249-6930-4ada-9252-b2636dddbba7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c2d59fcb-ea74-4c3e-83e4-d955147d76fd)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e5bd356d-d566-4507-8c8b-30009665709f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d3b7decf-4bf2-485f-842e-515bf7c8e8e5)(content(Whitespace\" \ \"))))(Projector((id a55a82b8-3000-4480-990a-b90eca32f44a)(kind \ - Checkbox)(syntax(Tile((id \ - 14b3a32c-81e1-42a0-8a8a-ce4185314c9d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8e1e42ef-b73d-46be-8732-744bc313d72c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f16275d7-940b-4c36-ad31-d942d66bf623)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d3131a70-f05e-440a-af3a-81e47ddfed1b)(content(Whitespace\" \ \"))))(Projector((id 93d573d7-4a2f-4ca5-b79a-b97538c9b8da)(kind \ - Checkbox)(syntax(Tile((id \ - ff04b9e0-617c-465b-b938-7c841ec39508)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7cd24089-4c9a-4178-89bb-d02c0c9a14fb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ dfde0b63-06d0-494b-b63e-6ca9bb3971a2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ df8d05e6-80be-42e0-9874-32c89cdaaeaa)(content(Whitespace\" \ \"))))(Projector((id 33ef13ad-63e0-4da4-98b1-237e3ed38090)(kind \ - Checkbox)(syntax(Tile((id \ - ea785ee3-c298-4955-b4e2-b54c1e34d4e4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 14ffff84-308b-42fb-bfb9-6d9369a0c9a9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cd5ed661-706b-4499-b336-e826aecd10bd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ afcee423-7270-4cce-a73a-7a091ee73df4)(content(Whitespace\" \ \"))))(Projector((id f824b12a-129a-467c-9a56-92ab171e5fde)(kind \ - Checkbox)(syntax(Tile((id \ - 5ab077bc-d58a-4f7f-9242-f2eab1bc62cb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8a683a68-5bfe-49be-8cc8-bbf4a56049f0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5d3bf562-0759-45ea-8e4c-61cf57badb44)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c4ac6f38-800c-4f8a-95e1-99c69aaa04e3)(content(Whitespace\" \ \"))))(Projector((id a1452671-2ea1-4e17-bf12-faa407ed3975)(kind \ - Checkbox)(syntax(Tile((id \ - f635f649-da2f-4376-8821-db9d6a7ccf4a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 572f9f86-fc27-42ed-8ae9-d95cfb99339b)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 31a2a1b4-3554-4e6f-b7f8-482214f2f294)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 730aa02d-91e9-4ee7-8473-426a8b0b9552)(content(Whitespace\" \ \"))))(Projector((id f14730df-8d13-411c-b753-294ce38c9892)(kind \ - Checkbox)(syntax(Tile((id \ - 91da2844-6386-4b5e-9b5b-d1822254e2a1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6c38bcf6-2229-4d0b-923e-7cdc27809a72)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8170695a-845c-4f48-94ca-9a666788bfe8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 5a68bafd-bc8c-4367-acab-5ad06106e62a)(content(Whitespace\" \ \"))))(Projector((id fa7beecb-a7c4-45c6-a697-6cb9dd898719)(kind \ - Checkbox)(syntax(Tile((id \ - 7062e20c-151d-4e74-8908-b776907ece30)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a432966f-1ac7-44c1-9732-942058217616)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 26020431-8edc-4d5c-ae4a-880dea42f515)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ cc72f274-068b-4479-b7fe-504629103c46)(content(Whitespace\" \ \"))))(Projector((id 6bfac14a-1f8d-4d62-92bd-63810477b54b)(kind \ - Checkbox)(syntax(Tile((id \ - 7d23d576-2326-4a35-a6a5-6dcc1c509b1e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d7d68a29-8aa6-442c-ae0c-6aefec1b28f8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 81aa1d26-d693-4f89-9ca2-289c03f4c07e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1939,121 +1691,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 4776ed24-67b4-493f-8dd6-04f9faa7ccd3)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 8dce0d40-dde7-4003-976b-f14597143158)(kind Checkbox)(syntax(Tile((id \ - da5e83e9-e977-4dfa-8ae5-4e11f009e204)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 8dce0d40-dde7-4003-976b-f14597143158)(kind Checkbox)(syntax((Tile((id \ ef60b350-5a80-4454-ae0b-6776e9568d71)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d2291bbf-fdc2-46b4-b14e-111d35e4296e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 35ec9b1e-6b29-4744-8b96-a3c62a2d974a)(content(Whitespace\" \ \"))))(Projector((id b1cbec9a-2199-4e87-af16-bbfaaf1a7280)(kind \ - Checkbox)(syntax(Tile((id \ - 951dab3c-69b7-479c-b631-ead582e99d3a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d9764711-c051-4603-820f-36a8e6ebe076)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ffd8534c-b332-42f2-878e-77987570a530)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9c9588f6-7367-49df-9248-ef5c77f245bf)(content(Whitespace\" \ \"))))(Projector((id 8fafd57e-fe74-4883-829f-2a7f1846de3a)(kind \ - Checkbox)(syntax(Tile((id \ - c32d7d46-1232-4b32-9470-084a4a8d30a9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 895cebfa-7a69-4ef4-87ac-8c665dcc78d1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e7213c8f-b1fc-4361-b357-39875c5e506d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e510087b-51e3-4f27-91ee-7319135ad11f)(content(Whitespace\" \ \"))))(Projector((id 66930060-0977-4f73-983f-c1610572b773)(kind \ - Checkbox)(syntax(Tile((id \ - 74f732f6-61c1-4c28-86c0-fd0181fbe8e6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2e88ddab-6ee1-48ef-b434-d8e91529cd32)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 12bf67ec-2fd6-4579-96bd-8f9500f1ed2c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ dae58d1d-01d6-4382-b28b-ac0e21c44e13)(content(Whitespace\" \ \"))))(Projector((id 3aa005e7-3e27-4268-9afe-a269d42b4352)(kind \ - Checkbox)(syntax(Tile((id \ - 65243ce4-eb84-4ace-89c6-a8ffffd7ad24)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b597b589-9138-40ed-9228-71a231752fb5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ec82555b-7a00-4a55-bc29-e05542cf9764)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1fee7a32-f2af-4f01-a04f-565062de304d)(content(Whitespace\" \ \"))))(Projector((id 68d9e33b-26c0-4ab2-a92a-8cc5ae0dc5db)(kind \ - Checkbox)(syntax(Tile((id \ - 91287e60-9ff0-41a2-b7a9-34dec88f9962)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 33ae5d71-2fc6-4bbc-a149-5ea693e417e0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 744fc999-277c-4466-a7ed-502ff4928ca2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 866550cc-a5e8-43ce-8df1-31fd31a74cfb)(content(Whitespace\" \ \"))))(Projector((id e55f956d-d725-40f3-a61c-90c7f22be582)(kind \ - Checkbox)(syntax(Tile((id \ - c9ca5052-f041-4139-9a2f-80849d3977a4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b9c727f9-b51f-46b6-b5d1-62ccf651ebe6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4e40ffa5-034e-4def-869c-6592571c608b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3cc15bdb-598d-47ea-b5d3-52f5c273676e)(content(Whitespace\" \ \"))))(Projector((id 0eb59756-4910-4f93-98be-9d5342453d37)(kind \ - Checkbox)(syntax(Tile((id \ - 85d22894-c0df-437b-9362-6a0b04b5534d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8cc5a6fc-897c-4148-ad3c-7f8392d37ad7)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ be3552ca-0596-45d3-872e-39900b847d9e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 15f143c6-6cd8-4ea1-97e3-c7b437808ebc)(content(Whitespace\" \ \"))))(Projector((id 40007901-885e-44cd-8f3d-38150e360d1d)(kind \ - Checkbox)(syntax(Tile((id \ - 49673bcc-6b6f-4cbf-bd4f-bbfa5a8fd627)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c2e5a532-7bc9-4544-ae85-9945d907f03f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6bf13aae-a05f-43b2-9965-5d36354976e6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a7916c23-ac27-4763-8396-121819a55ede)(content(Whitespace\" \ \"))))(Projector((id 3cb795f1-b961-4a81-a223-4021fe5eabbe)(kind \ - Checkbox)(syntax(Tile((id \ - 77a251d8-7619-4ce7-bb64-91954bd414ff)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1629e7c3-730a-42b5-b512-93ff2a3546a4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 203fc81b-6708-4eea-aab0-d7b359d9333e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2061,122 +1783,92 @@ let out : string * Haz3lcore.PersistentSegment.t = f835a3f6-9def-4f09-ba75-80e1f4d17cbf)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 76a96b1f-d21a-4f27-b419-953a791f93ef)(kind Checkbox)(syntax(Tile((id \ - 7c0c6926-ff46-4759-aacf-1aa64964c4d2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 76a96b1f-d21a-4f27-b419-953a791f93ef)(kind Checkbox)(syntax((Tile((id \ 52c4b212-9395-48d0-b967-f5aaa0f39709)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5897e01f-a2e0-4159-9070-40f6a0f0e046)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 394f7aa6-6aec-4a59-989a-daf943d885e8)(content(Whitespace\" \ \"))))(Projector((id 3711ab5f-aabb-408e-a5f7-7affd83d1ffd)(kind \ - Checkbox)(syntax(Tile((id \ - 7f7c2187-69fc-49fa-95d1-1cdbd8b053fe)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2f485f89-18da-4a4e-8d36-8dfafa5c6a50)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 646e05e0-610f-4a68-8da7-db3028c4dfdf)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 492107ff-118e-4c6c-be8a-1d3a468b952e)(content(Whitespace\" \ \"))))(Projector((id 22b2c08d-e1c4-424e-ab6d-683f9c5ec46c)(kind \ - Checkbox)(syntax(Tile((id \ - d72c833c-5683-42aa-b5df-f2707402eb30)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0c170e43-48b1-4768-8afe-13fb9b8764d3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7a71e097-a905-42da-b994-3901b3d64c11)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 704b3548-8e7b-41cd-a321-2cb1a5768f9c)(content(Whitespace\" \ \"))))(Projector((id 374443ba-a147-446b-9778-417ecd767ace)(kind \ - Checkbox)(syntax(Tile((id \ - 71861db9-94e9-4edc-b03e-6c915a6683af)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 84373059-c952-473b-9def-817bb18b3c74)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9d25e870-5368-400a-90f4-7ae1f37d6d29)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 42c2a85b-9804-40c9-992d-43ee34ef90ea)(content(Whitespace\" \ \"))))(Projector((id ff65f299-3e08-480f-b0cb-a2cf9d3f916b)(kind \ - Checkbox)(syntax(Tile((id \ - 09fa60c6-1e8a-41d1-ab29-3370aff05d4a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 73035010-f702-408e-a3d3-e35736bb5108)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d85a81b9-92e8-4fd4-9557-39d2fa9a9f25)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 05a764b5-9d88-4250-b627-512f7d25275e)(content(Whitespace\" \ \"))))(Projector((id 631e1026-2321-4a8a-8c68-b026d0d24028)(kind \ - Checkbox)(syntax(Tile((id \ - fbf82a3f-1d8b-49f0-a6e6-971bf146dd6d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 46f0cade-1f78-47cc-8091-dde49e9f2543)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 40bd3b4d-5825-4cfb-b8b7-35c679967295)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7dc1c363-4cff-470c-bf70-2cd720cc2ac6)(content(Whitespace\" \ \"))))(Projector((id e8ad0ab3-5636-4d37-b701-cee963598161)(kind \ - Checkbox)(syntax(Tile((id \ - ed213bdf-0737-4ea3-8c34-269059b0320b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7e28e965-4e06-45c1-806d-dda814276b94)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d655a1a7-9f9f-4ba3-a160-1ef7610ff59f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0ed9a538-5416-4d9d-bca8-6e28ceaf4f6c)(content(Whitespace\" \ \"))))(Projector((id 9aabdcf8-c4cf-4705-9ba3-806e5f66dc96)(kind \ - Checkbox)(syntax(Tile((id \ - 7beb445d-ce9b-4de2-a321-2ebb2506c520)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0f6ab014-5d7e-40c9-b1ea-bce9bded7183)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ eb5f3fd4-fbf4-4e34-8071-ea7607ad9c9e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b21091b7-6872-4103-b68f-3efa944b9bf3)(content(Whitespace\" \ \"))))(Projector((id 3d5f9403-7a33-4d5c-aaaa-c4f1037ce041)(kind \ - Checkbox)(syntax(Tile((id \ - 00cc5e3c-0193-4752-ac84-d7fae5e3eefa)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ de0483c2-8583-4985-b8e7-317b1a536043)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 85d11ed3-c569-433c-9849-0c641ff34a92)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 46cd8b66-2ee2-45a3-9f5c-9655824bf8ca)(content(Whitespace\" \ \"))))(Projector((id 0431efed-505e-4804-9c7b-f86c0eecd9e4)(kind \ - Checkbox)(syntax(Tile((id \ - c8f22558-ffc4-44db-9ad6-07d546dff391)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a72e1100-9c18-44d7-992f-a8d5edf73d0a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Secondary((id \ - d6c28fe3-d6d7-4389-ae67-51b049681ffe)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Secondary((id \ + d6c28fe3-d6d7-4389-ae67-51b049681ffe)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ c3e2ef44-4920-48c8-8a8f-cef08a72587b)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -3343,132 +3035,98 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 1d7b667f-e8ef-4be4-8413-60932a4ba27f)(content(Whitespace\" \ \"))))(Projector((id 5ec6f8c0-f7ff-4142-9bc0-ea2151e74fab)(kind \ - Fold)(syntax(Tile((id \ - 770e7f76-8ca8-45a9-98b7-74c36369156a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - edd098ac-997f-45a8-9a2f-6ce12046e3d9)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id edd098ac-997f-45a8-9a2f-6ce12046e3d9)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 0d196735-724f-4d96-9d3a-0665be2c5a7c)(content(Whitespace\"\\n\"))))(Tile((id \ cfa36f22-fb9c-4573-bb6f-165e552d9efb)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - df4f7ed9-f492-4c82-8aa2-3a9e067acca6)(kind Checkbox)(syntax(Tile((id \ - 96dc3dfb-2da1-43be-81b7-8ffd994ef3cd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + df4f7ed9-f492-4c82-8aa2-3a9e067acca6)(kind Checkbox)(syntax((Tile((id \ 32dff16d-0b51-4478-b24d-d5bb5d7e019a)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3434ea26-5cfd-441b-83c2-b6457de49157)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2ff5fd95-bfaf-4e07-8782-87bf014952ee)(content(Whitespace\" \ \"))))(Projector((id bbdcceb1-d03b-4a99-9606-7990d084e18d)(kind \ - Checkbox)(syntax(Tile((id \ - c9b19e63-aa27-4392-86b2-1eee69ea8b3e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1c514681-24b7-41dc-bae1-9df33d53c261)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ dd872c62-d58e-4f67-b5f0-843999ae815a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3c7bec42-c132-41ba-b1b9-4b9d807b7fdd)(content(Whitespace\" \ \"))))(Projector((id 37321ff4-a223-490a-bb8c-b3a74640b60b)(kind \ - Checkbox)(syntax(Tile((id \ - 1f429cd9-7d27-4681-b884-3502b350c128)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 41817101-eacb-4237-a923-9b2f2aa6eacd)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 70fca147-8736-479b-9d00-95da4c848b05)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1c21377b-5f71-4433-bc44-0a39721bcc9b)(content(Whitespace\" \ \"))))(Projector((id 508400a1-107e-48fb-bdef-bf79852166c1)(kind \ - Checkbox)(syntax(Tile((id \ - 806ee08f-edd7-4cdc-98a3-9a823c1d5000)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e455d95d-644f-452b-b818-5145305c8b06)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 00abe570-b77f-4f0c-a78c-c11e36d5ebb0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 611b8712-fea9-400d-9764-35dbf8370944)(content(Whitespace\" \ \"))))(Projector((id f92b63e4-4478-41e7-a3e6-87f4911d726f)(kind \ - Checkbox)(syntax(Tile((id \ - 2e607e2e-cac1-49dc-b3f7-f3fdb4936e04)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 236d235d-44df-49e9-9655-454e1ddabc0a)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0cc9d8a1-af13-4b5e-9aaf-7afa4fe0a903)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 5a45069b-c0f1-4c8b-988f-a6e2d3327392)(content(Whitespace\" \ \"))))(Projector((id a7f3e751-8619-468f-8935-012c1f382e7f)(kind \ - Checkbox)(syntax(Tile((id \ - 4a1deb12-efec-4176-b19f-aae7070490da)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 28a9b695-6d7a-446a-bc13-1a4377e7b889)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ acd086e2-7863-468e-85d6-c8a34750591a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3e7a713e-9752-404e-9685-1c72de7dd268)(content(Whitespace\" \ \"))))(Projector((id ca5eb6ca-b9d8-414e-aded-4add8b2679fa)(kind \ - Checkbox)(syntax(Tile((id \ - 55929d34-ff43-4e14-880e-376094e2ff77)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cd52e5d8-2cdd-43e9-964b-472a364cc0c7)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a609a4cb-c5b3-47a5-b67f-3b3e270590f8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f3f43e39-4e38-4113-9e2b-6e273846e2c6)(content(Whitespace\" \ \"))))(Projector((id 7c8224d6-917f-49cc-a128-68185baf1dc3)(kind \ - Checkbox)(syntax(Tile((id \ - ed27d511-1e14-4455-b213-a57503b8391e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e66e2bc1-1f22-442c-be86-45156129160b)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1bc15303-cf92-4318-bda5-2a8ff13cf0dd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ fdf524a7-98c7-47ee-ae21-59136b199260)(content(Whitespace\" \ \"))))(Projector((id a472685f-e8b5-4f6e-9867-954fd3b192d9)(kind \ - Checkbox)(syntax(Tile((id \ - dbd03487-5871-492f-8f53-d2408575058d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ac4140bb-ec9f-4d95-ad04-abadad69f81e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 670df7c5-5c15-4ed6-9c7f-5f912d8686e7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ de84ef20-8523-43b1-8e6c-02e45736a9ed)(content(Whitespace\" \ \"))))(Projector((id 855026c9-a8dd-45cc-9948-e31474cead72)(kind \ - Checkbox)(syntax(Tile((id \ - 20ac914b-4e56-4854-916e-9b827a85a4f1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b942cc84-df28-4437-a54c-a5ff074b3336)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ b8037723-6b49-4c8e-b3a2-d14c5e04c22b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3476,121 +3134,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 16c09b21-9ae9-4f0a-8a71-dff2af5cfed7)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 9a96afaf-7ca9-436f-868f-2fe230df08a7)(kind Checkbox)(syntax(Tile((id \ - 9c9de655-1792-437f-b51f-ad3528c737b9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 9a96afaf-7ca9-436f-868f-2fe230df08a7)(kind Checkbox)(syntax((Tile((id \ 7c509ebb-3902-4a41-af95-20e8dab591df)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5de22dc4-638c-4935-a372-90975e156ee3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c8bea3ad-14cf-47eb-9723-c69e60d44504)(content(Whitespace\" \ \"))))(Projector((id c9792152-13ac-4949-84d8-ca6ff11cdc38)(kind \ - Checkbox)(syntax(Tile((id \ - f92f2ddf-15b1-449a-9c03-a7b42e08a605)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c85313eb-a2c5-4833-a26b-8852d70c94ce)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d4e08a49-c7b5-47d7-aa19-d08e359a222d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 61ea0a3e-95b9-4a53-a183-0f065a634ad3)(content(Whitespace\" \ \"))))(Projector((id 2b075b82-2bf4-4dda-b1b7-80935e295e70)(kind \ - Checkbox)(syntax(Tile((id \ - c517e439-b7bf-4e23-9faf-c2c568db4ba4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bc7b9064-befe-4c2e-afa9-0157d2b06534)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4374c3e5-f6ca-4bc7-9a33-798782bf2ae9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ cd0506bb-5eae-41eb-beca-f33d7006beea)(content(Whitespace\" \ \"))))(Projector((id e7148b64-59a9-4805-9741-3130acc30cda)(kind \ - Checkbox)(syntax(Tile((id \ - 7e4577e7-7d35-4c1f-a3b4-311c50fb6ed6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c8914637-8c24-4d4e-b6d8-3bd02fbe53fa)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6a82df11-3e0e-4ab8-bb4e-75bbcd6aa44f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 398c3d58-8d68-4142-a2a4-88309ba8214b)(content(Whitespace\" \ \"))))(Projector((id ed8362e4-467c-4222-b5ee-f496f3d17799)(kind \ - Checkbox)(syntax(Tile((id \ - e5f3ba1f-b8e5-40b9-a5fc-098ba7725a63)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d5c5d20d-7d52-433c-9f0e-d6678815d0fd)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cc968bf4-3a71-40bf-aeff-1dded46d9675)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0c093959-8fe6-4a86-9e69-31587f771495)(content(Whitespace\" \ \"))))(Projector((id a1d6c67c-2968-459b-a6e3-74c9cb8bd9cd)(kind \ - Checkbox)(syntax(Tile((id \ - 5099365d-e454-47dd-9133-b5fe658fb102)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ caea34b8-6fb1-424b-b8ce-27669e814fc0)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3ca1011a-b9c2-4594-95e4-5b477b080904)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 71d1d0ea-946e-4ebb-907b-c19719b16074)(content(Whitespace\" \ \"))))(Projector((id a62362b4-1d4b-4b14-8c11-38e9dac1dba1)(kind \ - Checkbox)(syntax(Tile((id \ - 333d5e3f-b94e-4223-937f-17080d4007e4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c65675f0-fa0c-418f-b8dc-d4b6a8d5b671)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 56a4787f-2b92-4e3c-b04b-9814a8b4391d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3d92ecb4-1647-4fc1-ba3e-bce755a9e5b4)(content(Whitespace\" \ \"))))(Projector((id f2524ade-2872-4992-9a70-afd0a27d023c)(kind \ - Checkbox)(syntax(Tile((id \ - 08b788a5-3f81-4990-a6b4-11339c1ef1c9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 015f3e58-3411-4d75-9497-986a40dae1f8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e2a2e4c3-c5c5-4bfd-9385-a10b8310e0a6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2eecc92d-90bc-447b-bf41-afdc0e7bf2e5)(content(Whitespace\" \ \"))))(Projector((id a90e1627-51e5-46bf-b89a-edbf21ddac5c)(kind \ - Checkbox)(syntax(Tile((id \ - b25309ca-9750-430e-a452-9de268518d1e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 23d8a594-2445-4eee-9f68-2d6f9fbab93a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 991aa878-85f8-4e1b-8485-f6fd0ae68c67)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8db0ebc4-a1fc-45c1-a1cc-4e6a116f95ca)(content(Whitespace\" \ \"))))(Projector((id a45f69ca-3b8e-4359-b1a3-ea5e757289ac)(kind \ - Checkbox)(syntax(Tile((id \ - 35869728-8c47-42a9-93ac-6bec336af1d2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 90531b02-caa5-4b6b-a70c-70c25b6dd068)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 71228637-2b74-4887-88b5-4c3e3f93133d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3598,121 +3226,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 0b22b52d-5b59-4ef8-8f3e-6f62a59e26ad)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 8396f125-8b3a-4d24-9b18-2501de158bc5)(kind Checkbox)(syntax(Tile((id \ - 72234942-2b1f-479a-9cc5-4d46513ba306)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 8396f125-8b3a-4d24-9b18-2501de158bc5)(kind Checkbox)(syntax((Tile((id \ bdbbe111-7d7d-4d1d-968d-ccc57e1c2561)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4a21e5b0-c33f-4f63-9ffa-d35faf059c49)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0cae7bf6-3c8f-48de-80b5-831326195b89)(content(Whitespace\" \ \"))))(Projector((id bf40da7a-7ad1-40e6-a36f-40d136dbb08f)(kind \ - Checkbox)(syntax(Tile((id \ - f7f9610a-7dae-4839-ab86-e3dcc93949b0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 77c45cd7-5624-456f-bbf2-5037f89a0e52)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a17dbdce-d07d-485c-9a75-427f51b1800b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 49e9cbdd-4fcd-42a7-b682-667c49bf6d9d)(content(Whitespace\" \ \"))))(Projector((id 16cabdf9-94fe-4d84-813e-394526670ebc)(kind \ - Checkbox)(syntax(Tile((id \ - 6d695d30-b606-42a5-a6e6-50e371d73cf4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ad427b2a-0777-4c66-bade-ee717d16bfe3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ da522140-5404-403a-a10b-75836ab9e1cd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 22d3804b-5c7d-48b1-a098-42a326423249)(content(Whitespace\" \ \"))))(Projector((id b6fb77b0-95ee-42b1-bdb3-3af936e1742f)(kind \ - Checkbox)(syntax(Tile((id \ - 272404ac-a29c-42cd-a35c-3ee659050303)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 56383c1f-cb33-4019-bb64-0a534e010f3a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4d5580f4-c47c-47ae-9456-3e8d3aec453d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 6a1f8c9e-589b-4dbb-b756-0ec70bc55027)(content(Whitespace\" \ \"))))(Projector((id 76552dae-528d-4dc9-9238-8fc9702b60c0)(kind \ - Checkbox)(syntax(Tile((id \ - 1b2a2618-9363-4e0b-8399-8d6455ce5493)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 10bdfd89-14f7-4b18-ac0a-f987624468a9)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2d6c33d1-6f51-4ac2-a91b-95a602d5db61)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ce2f4d40-336e-450e-a256-182b9b7bb382)(content(Whitespace\" \ \"))))(Projector((id c4d381bb-cfd9-472d-a056-dfeb419342c2)(kind \ - Checkbox)(syntax(Tile((id \ - 3150444c-0970-4477-bb91-3aed6bd84fdd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0241ca6e-d13b-43a9-b106-efb8d3661f51)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 64c28468-b77f-411e-9963-e5a7974d1efa)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 07151fdd-3fe3-4381-b0c3-f8da11b03f60)(content(Whitespace\" \ \"))))(Projector((id a69e5607-b0c0-49f1-a162-41485f5ae6b2)(kind \ - Checkbox)(syntax(Tile((id \ - 322afb09-3c3b-40ac-a417-0633b6685630)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 77540305-8afe-4744-94a0-36e41a5586fa)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 55070a90-7323-4932-8e7a-b6edb96a29be)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2b001fe7-6aba-4140-a534-14f3f1c57127)(content(Whitespace\" \ \"))))(Projector((id 0dd0da00-fa6d-4c9b-a70f-669e9fc269c2)(kind \ - Checkbox)(syntax(Tile((id \ - 2e93a33d-82ef-4488-8f24-d1df1a97fc95)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d000f279-1c9c-45e3-94bb-dacae903af7d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 608499e7-f1bc-433e-888c-7920d8cbca8c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c85b1153-aa42-4096-ba9e-76c1bc20122c)(content(Whitespace\" \ \"))))(Projector((id aa29d6c3-2364-4c57-9cbc-41ecf8198f15)(kind \ - Checkbox)(syntax(Tile((id \ - a4c7097f-9625-4114-936a-f52891088986)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7637f6d3-dd94-492a-9295-5409c4e1795e)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4761236a-cdab-4fa7-8f74-b4fe21695f92)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0ea4345f-c382-4766-9a10-33696d55286e)(content(Whitespace\" \ \"))))(Projector((id 7d8d2295-6bad-46cd-97a7-6633549ff4cc)(kind \ - Checkbox)(syntax(Tile((id \ - 75ef6ceb-1be6-4ad2-a0e4-59c8ac042fca)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 55561930-de5f-4472-8369-4c53d5936e0d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ b95d9518-021c-4f84-929a-9ddbb641e1c1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3720,121 +3318,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 99978ca9-3eec-44f6-bf3c-913cc5194bc3)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - d84b839e-1262-4649-9b43-b8555e94484e)(kind Checkbox)(syntax(Tile((id \ - d506d717-8348-4a9b-865a-dbe505561fec)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + d84b839e-1262-4649-9b43-b8555e94484e)(kind Checkbox)(syntax((Tile((id \ c98d5d2b-e0ed-4f58-afc2-3132d0649cfc)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a00929e6-0ee9-40b8-9de2-300f7b2e5ba2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b7f22dac-4ca1-4133-8801-584640e6f2ef)(content(Whitespace\" \ \"))))(Projector((id 76638553-8457-417f-9099-9a68e7fe11a2)(kind \ - Checkbox)(syntax(Tile((id \ - 4aa6dcc9-8903-4db5-9d1a-64c1e8808993)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ac95c2cb-2648-478a-bee6-264bc3ded049)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d58a9266-7d59-43ab-8c0a-65840cf50fb8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 412ce05b-d965-4abc-8151-c2f926e45060)(content(Whitespace\" \ \"))))(Projector((id 7ccec675-8953-4239-9646-2cb6366ba468)(kind \ - Checkbox)(syntax(Tile((id \ - 4be93ab4-dadd-4f66-b2b7-0c1c6f44132d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 27197632-db14-4364-88ea-6aac6327a5eb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c3c8743d-b4b5-4e82-a8c1-ec310ca15bc9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c5fe8cc5-17fa-4644-b134-8e5ea6bdc684)(content(Whitespace\" \ \"))))(Projector((id 4527ca94-54f7-449a-86be-cf502bd7718b)(kind \ - Checkbox)(syntax(Tile((id \ - 8d3509c1-8ca2-4bf9-8b62-871de69d0bdb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ec4653d8-2fad-4c59-85ac-aeb500a8fb6e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3040e675-b0d6-409e-8048-3f651d2a04de)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 207fcfb6-7e68-4538-b8cf-8fd4d95d0203)(content(Whitespace\" \ \"))))(Projector((id d812f485-c80a-4aeb-8eee-f77109ed3b56)(kind \ - Checkbox)(syntax(Tile((id \ - 88ebd021-6085-47a6-8fec-f4a6bd38c429)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 59679073-d5bd-4f93-8d12-d873a35d6480)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0f316bb4-65a9-410a-a1ec-8ef89713b341)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 0189db43-8b98-402a-926a-428571351337)(content(Whitespace\" \ \"))))(Projector((id e2f88ad7-9201-48b0-af62-f4da9287d638)(kind \ - Checkbox)(syntax(Tile((id \ - 4c0fcf67-63cb-401a-95b0-a1af5356d0f7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d53ad351-36d2-4686-b637-c66fcfe2e580)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ec4be47a-1145-4654-91b6-74e2ad4aabf5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ bdd0980c-fcd9-46d8-933b-21f7a544ac3d)(content(Whitespace\" \ \"))))(Projector((id a99a4bf5-b3c2-40ac-91b0-4aafa2f4c962)(kind \ - Checkbox)(syntax(Tile((id \ - 8f9407df-858c-4856-8eb7-e8ff2a731477)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 862d19bc-bc1d-46a9-b860-f39594144fb6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fdcf559d-7b1b-4c5c-8cab-010b5ca1cb97)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 096e62f8-9b30-47ee-89e8-c77eb17cabe8)(content(Whitespace\" \ \"))))(Projector((id 01f3355d-6944-46dc-a106-ff09a56a3dec)(kind \ - Checkbox)(syntax(Tile((id \ - 04ea57fd-3af0-4c15-b1dd-3a8062bc7c88)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0f80f4c7-b6cf-406d-b788-1d4a67a62acf)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ae708caf-a65f-4aac-9992-ece0c7e4c0b9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 96be1263-11ad-47d8-b5d5-8f567b4bddb0)(content(Whitespace\" \ \"))))(Projector((id 40277527-e7ec-4d12-a805-4d92f8d00044)(kind \ - Checkbox)(syntax(Tile((id \ - d3914f35-5fe4-4e0d-a1a1-d4474453ad57)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c495c5d9-2d02-440c-8301-26c1da2a9b85)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2b12c9db-e34a-4350-8b08-07dcff5a9136)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 84e23e3c-3f85-4855-850b-d2063b8be0d2)(content(Whitespace\" \ \"))))(Projector((id e0016acd-ff34-42bd-8654-46d071e0ed4a)(kind \ - Checkbox)(syntax(Tile((id \ - 2d648df1-441a-471e-860c-f6139075ca2f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 57e0f006-e5b9-4904-8ffb-b7c3c625bb69)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 211a60fd-d51f-4a61-9632-baae4b9a33dd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3842,121 +3410,91 @@ let out : string * Haz3lcore.PersistentSegment.t = f9d8de05-bb67-4a55-93e2-975f3b2b7261)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 98bc9adb-8160-4e02-a6a3-9f27448fc4ee)(kind Checkbox)(syntax(Tile((id \ - 5c57d876-afe9-4902-97a5-5430c067edca)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 98bc9adb-8160-4e02-a6a3-9f27448fc4ee)(kind Checkbox)(syntax((Tile((id \ 14e74614-bb6a-4234-b05d-225ca3c73b17)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d5df90a3-fdec-465a-8151-f0df97494cc5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ fb2edf5f-d720-46bb-a5ce-ac10af7cbec7)(content(Whitespace\" \ \"))))(Projector((id 6499f5f5-6af3-4f84-84d1-8c8e3e7db91a)(kind \ - Checkbox)(syntax(Tile((id \ - 863397c0-3ad8-4bfd-ac2f-da4f4cf7f825)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d1302afe-cf6f-4393-a02b-91bd15b61f10)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1d729d39-e3d2-4545-ac5a-2d13a6835edb)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 590d3157-7c9e-4abf-894e-f38eb8161114)(content(Whitespace\" \ \"))))(Projector((id 8a7950b0-339a-43e3-96e3-e8189a65d42c)(kind \ - Checkbox)(syntax(Tile((id \ - 950d0f5a-1394-4fcc-a625-1fc8e013c77f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b9649818-1095-4ac4-b6b7-3d132b79125f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d38ba2a9-1554-4c74-9310-e2e0072b7a1a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ce4a97fd-511d-4bad-8c92-ebce2900b41e)(content(Whitespace\" \ \"))))(Projector((id d3a31504-7b5a-4274-a233-e90ef82be4b4)(kind \ - Checkbox)(syntax(Tile((id \ - 1679e4e5-db51-4696-83ef-b854eb57770f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f504dc32-29f6-46ce-89b0-128caf6ca7f3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c9d9359e-9926-490f-9082-ec966a9f09bb)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4f7b4ca3-cb6e-4708-a05a-03fe512def32)(content(Whitespace\" \ \"))))(Projector((id 68382874-7088-4be4-8a54-339a293d7b04)(kind \ - Checkbox)(syntax(Tile((id \ - 35f9410d-3aa9-4aac-8c61-f60c7db66ea6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9a7ba24c-7e06-4ab9-96b9-888b2150610d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9f807d6b-35f4-4f8c-941f-febc840cdfe1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 579dbce4-3731-4992-894d-7e1aa53e5cf6)(content(Whitespace\" \ \"))))(Projector((id 714a2fa7-e8d1-4c82-8f28-547ffad14c58)(kind \ - Checkbox)(syntax(Tile((id \ - 4397b9dd-56ab-4698-a309-a18d2c5d1e26)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6867f2e9-55f1-46f7-9d6c-a66e18fab30f)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b4d5d7d0-ed57-4f6c-b159-5007824514a0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 87834d35-fc0a-445d-9f0b-12b8de936c19)(content(Whitespace\" \ \"))))(Projector((id 18e1c428-88c0-4fe1-84b1-dadb116946ba)(kind \ - Checkbox)(syntax(Tile((id \ - b46f54b2-d130-45cf-9e50-79b90a641f10)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9b5c62f6-7ae4-4695-a7e0-760a89ac73f6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fa31ebfa-c30b-4771-a807-81f76bcbbe0d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 63299bed-a291-47a7-802d-8f8f5872feb9)(content(Whitespace\" \ \"))))(Projector((id 1b66a142-5e91-4cc0-ab15-f1002163ca6b)(kind \ - Checkbox)(syntax(Tile((id \ - eefc5174-0ac7-42eb-bc90-591dd0fde474)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 71ba42b7-4c28-4206-9b59-9527f06d51b1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c3a16d12-097b-44a0-a14c-2b4b906b5f02)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 501fc317-aeb5-47d1-ba8f-4beac53c63e1)(content(Whitespace\" \ \"))))(Projector((id 63fc5cc1-303f-4a0a-a8a0-b273e3e0e63a)(kind \ - Checkbox)(syntax(Tile((id \ - bc2e8310-46d6-43c8-90b7-da7b0d752d82)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ fccf2c1f-4be2-4bec-9a88-03b0b1cbacc9)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8d6effb0-3b33-444f-93ea-2253c25ac252)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 5239b63f-8803-4c73-b60b-9e59aaf830ec)(content(Whitespace\" \ \"))))(Projector((id b8f3216c-a268-47a6-9871-0a522e6cb9b6)(kind \ - Checkbox)(syntax(Tile((id \ - 37fcfbeb-b582-42c2-badf-69e8b179da86)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3892c20c-026d-4585-b03d-dc54ed9ab493)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 1e6086b4-7868-43f6-9371-f10eb4fa0e94)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3964,121 +3502,91 @@ let out : string * Haz3lcore.PersistentSegment.t = cd0187ce-5bc0-40d4-b93c-214d1952de01)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - d4b2e8f5-9f90-42fc-8de8-68f4b91379de)(kind Checkbox)(syntax(Tile((id \ - 92b43316-8208-4757-8023-a36405fcd122)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + d4b2e8f5-9f90-42fc-8de8-68f4b91379de)(kind Checkbox)(syntax((Tile((id \ b6fc50f7-e517-4a13-8eb2-4126fa7bf6d9)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 337cc22d-f017-496e-9b79-aea9cd4e08e6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ aefb75f0-bbc1-4f0b-878f-dd25ba8c47be)(content(Whitespace\" \ \"))))(Projector((id 75e72c48-2e9c-4c63-b2de-abad9b185a9d)(kind \ - Checkbox)(syntax(Tile((id \ - 38eb30b9-56d3-4d69-b38e-5d75d1b7d3da)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2f72f643-3ecf-4d26-8de0-ed5def680fa5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fcd1af35-a3ff-4d19-a254-f6b8f3489800)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3ab58c3c-858f-4f46-bcc0-07dbd04c881d)(content(Whitespace\" \ \"))))(Projector((id f66e366e-82fe-43c1-8e50-c31509f39ec8)(kind \ - Checkbox)(syntax(Tile((id \ - 97578eb0-ad77-44c4-a228-ab1831b0acd3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0019d26b-6d76-410d-a98f-9c07d0080e70)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 81860464-26bb-4d52-a41f-569ea9ab8f20)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ efcb3970-e238-47d8-8f8d-8567307672a1)(content(Whitespace\" \ \"))))(Projector((id 9a55c6fd-1042-4a45-895e-4bc4f458d69a)(kind \ - Checkbox)(syntax(Tile((id \ - ad18ef77-e474-4f5a-a446-1473fecd6c2c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c158357f-797b-4674-966e-9614327ada85)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1e1097e1-618f-445d-959d-1432a7efb992)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 61f479b8-2d74-4f5f-9836-5b044b882bd1)(content(Whitespace\" \ \"))))(Projector((id 8a8a1a5d-9fc4-4a56-8bf5-7d78887f04f3)(kind \ - Checkbox)(syntax(Tile((id \ - aff92a6e-3d3a-4c30-84f6-7e24ac90d4c5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f907336c-aa0f-4420-b252-13d9082edec9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6500d167-67e9-4194-a19e-fafa170366ac)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 15db568b-4c77-4347-8a8f-38d38eef7155)(content(Whitespace\" \ \"))))(Projector((id c5bae58f-cb8f-4315-aea9-c07f05dd3376)(kind \ - Checkbox)(syntax(Tile((id \ - 62c8e68f-8c72-4ab9-956f-e414e8a20fcf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 82216735-2cf2-48a3-b90f-460d21566cf8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 473243d1-d6b0-4519-9f3c-13817d071799)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 5eede4b3-1bd5-4547-8bab-61dfbf1d66c8)(content(Whitespace\" \ \"))))(Projector((id 02564cb5-1cb2-466d-b550-b15ea7f580d6)(kind \ - Checkbox)(syntax(Tile((id \ - fba3739c-9912-420d-a9dc-e2fbb305c852)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0313c2e3-8a3a-4448-92d6-f6c0529af65e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a7813442-ab7b-4291-b349-c847ae388bba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 68cfa9ad-02bb-4fc4-8476-bc90b7fb1810)(content(Whitespace\" \ \"))))(Projector((id f401a0d0-d5b2-4e1b-9656-d8bc39dc0471)(kind \ - Checkbox)(syntax(Tile((id \ - 896b0875-8d24-4e77-8ce5-60ec78385721)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9c5f5095-0dfe-45c3-af6f-32e32ce19284)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 02b2ec09-0254-492f-ba16-e373bba8a7b5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 530bea3c-06ed-4589-a4b1-537b612c2247)(content(Whitespace\" \ \"))))(Projector((id fd5b688a-71f4-435f-ae25-c84ab5c12b23)(kind \ - Checkbox)(syntax(Tile((id \ - 80aa27ad-0f4b-406a-abde-a8b417e12119)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4e06a834-c09f-44a2-b4f8-03dc4584003d)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c192d40c-e252-4959-a1fb-5eac7bcae6bc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4e88b80d-791b-40c5-a5d5-26c3706ab27c)(content(Whitespace\" \ \"))))(Projector((id bbb0cf11-54b4-4ffc-8910-91ddd087b732)(kind \ - Checkbox)(syntax(Tile((id \ - e2faa699-9bcf-4f2a-83a7-4a657faa48d5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f78bf4b8-f90a-454c-9c65-f4dab21aa3b3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 03bb50bd-998b-4ef3-b8c3-5393b28696c7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -4086,121 +3594,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 6f4b63ca-3fa2-40db-97f9-2e455742c6a5)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 2aad5a1c-83d5-4658-ad50-fb91d68c4ad6)(kind Checkbox)(syntax(Tile((id \ - b5fb8e8a-ff95-4d65-9841-c4d695605aa5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 2aad5a1c-83d5-4658-ad50-fb91d68c4ad6)(kind Checkbox)(syntax((Tile((id \ fa24a950-6224-4b84-a8d1-2620a374930c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 019fa892-b113-4580-851b-2dd02a2708ba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1e7af096-c4dc-4aba-8330-3f01c4b53d44)(content(Whitespace\" \ \"))))(Projector((id fa9ffde8-6d32-408b-a7d4-aa7c84b82aa8)(kind \ - Checkbox)(syntax(Tile((id \ - 3b6c9e41-8281-4f5b-bbc6-478e4977d322)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e7ecb39b-03e7-4291-9a26-7d1e47ed0862)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9db54cd5-5994-4067-943d-14053050b115)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ fc2d5277-0b52-4fd0-a854-0c2e0c75c84c)(content(Whitespace\" \ \"))))(Projector((id 81aff6f9-6dad-4ef2-8ba6-6e4fc42f9d11)(kind \ - Checkbox)(syntax(Tile((id \ - 511b472b-35a2-48b8-bb8c-ea4bba3c64e0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5744d658-d574-4b79-916d-d5148dc88952)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 420c0dd2-ebd8-4c84-9abd-60b5a07b6acd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ dc155665-1cb1-495c-8760-040fccbbd10c)(content(Whitespace\" \ \"))))(Projector((id 3a12826b-a133-48b6-b6d7-5d638238fc98)(kind \ - Checkbox)(syntax(Tile((id \ - 1cae9bff-eaf9-4811-848b-1d68a4031fc7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 580f2b0f-9345-4512-9122-4d11a85f6891)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 57bfb199-e0b2-4af9-be6b-7f0ce5e10e24)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 22c54d02-f817-4513-b864-e9e9996b160e)(content(Whitespace\" \ \"))))(Projector((id 3e480753-e1b3-4ab2-9dba-01a9316f4314)(kind \ - Checkbox)(syntax(Tile((id \ - e7f28c1a-c158-4133-ac6d-1b1016afc9d2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 770c4240-7c5d-430f-aad4-909feeb8e77f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6b4f2c10-2ead-4870-ab41-f9bad79d6bae)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d5ff8c76-557b-4bea-8400-3f0e87274764)(content(Whitespace\" \ \"))))(Projector((id dd4b6723-9aef-4f2d-bcae-2757a6b17400)(kind \ - Checkbox)(syntax(Tile((id \ - 31a710a0-5a93-42b6-8c0c-0042947f441c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 60995deb-10bc-4fac-91cd-40952e2059d8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 21af841b-5679-4d73-9efa-db2b6ad52bc2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f01d8acd-d843-47f2-8073-090fcb1b6f12)(content(Whitespace\" \ \"))))(Projector((id ec27696b-ce2b-4860-998d-835f333952a2)(kind \ - Checkbox)(syntax(Tile((id \ - b0e0032c-07c2-4bac-bdc8-f032a7281e9e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ec20f9ce-46ce-48e1-b0e4-742f38b4a8d4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d8d8480d-0012-4be5-ac7d-72184f4afeba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 029b77c9-d5d5-4600-8673-56d0c87ea6bc)(content(Whitespace\" \ \"))))(Projector((id 6df5c6c3-29dc-4ac2-b052-bfd9c7b5f3a5)(kind \ - Checkbox)(syntax(Tile((id \ - fc7c2089-c418-4230-8494-3d835532efba)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ fa649e63-50de-4045-87de-3004fe00ba46)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1536d5c3-06a9-4612-9144-df8e16541567)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 45b06c9a-2abb-47c3-be46-ddcaa45696b7)(content(Whitespace\" \ \"))))(Projector((id 340e3989-17b7-4c8c-90f2-d66ca4dd938c)(kind \ - Checkbox)(syntax(Tile((id \ - 50fd94ad-6255-4bd0-8840-91da0b8634ba)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3ee5f372-1453-4ad2-b3d9-a5aad8b5f58a)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8e5f0023-d818-4523-ac82-e99c0b5a4cd5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e2ddceda-d0e4-41d9-b72b-eb1858cbda2c)(content(Whitespace\" \ \"))))(Projector((id c7e10f8a-dcea-4007-bbf1-002203310ea1)(kind \ - Checkbox)(syntax(Tile((id \ - 540a1705-1438-4ff5-8960-c80ba47fe144)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4cfe78a3-6ccf-460b-8662-9e4866210ae7)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ b34b0420-21a6-4844-a3fc-b53057130afc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -4208,121 +3686,91 @@ let out : string * Haz3lcore.PersistentSegment.t = be388ed3-9c9c-49ba-b963-3646c7359d8c)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 3b0db6c9-f5ea-482d-9e04-74b456413772)(kind Checkbox)(syntax(Tile((id \ - c431a843-953c-4fc4-950e-ea93d6ab3991)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 3b0db6c9-f5ea-482d-9e04-74b456413772)(kind Checkbox)(syntax((Tile((id \ 338be517-b7b6-4417-8437-3dcb27e58581)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 62bda4f7-27ba-4227-a77b-d9f86614587e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ bbeb1760-9135-40a5-9ccf-26605e21c9e0)(content(Whitespace\" \ \"))))(Projector((id e90d427e-d93e-456a-97c7-96382ccdb51a)(kind \ - Checkbox)(syntax(Tile((id \ - 4e1ffd3d-0eb2-4b7f-a46d-addbe2e18756)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5e210b3f-42db-4c2f-9051-7becc76c0afb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a8af1783-68bd-4cf5-a9c8-7655bf83496b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 731d3634-70c4-46e5-a57e-4c66bf205d38)(content(Whitespace\" \ \"))))(Projector((id d5ba2f5c-e4fa-46f0-bba1-8af79a752784)(kind \ - Checkbox)(syntax(Tile((id \ - c549a240-ce3b-47d1-beb8-b9b740eaee9a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ badf7145-4965-4fed-bde3-980e4ff0892d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9a4d4227-c665-456d-9dea-48dea8432b1a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1c9c1885-737d-462e-9371-6b441e6582b5)(content(Whitespace\" \ \"))))(Projector((id ef609df5-d1d7-4fb4-bd9d-820e233455bc)(kind \ - Checkbox)(syntax(Tile((id \ - 961d8245-a245-4015-8422-e566b755e515)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4fa20b17-2c84-44ef-b825-3a43255af19a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c65368e0-6f6e-45c2-a015-fda655907614)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a58dd34f-c0ea-43d0-a483-4dbb2362c43c)(content(Whitespace\" \ \"))))(Projector((id 371d692e-3bf6-41e1-832c-33a8da86b4ed)(kind \ - Checkbox)(syntax(Tile((id \ - 0836b04b-d2df-4d26-9399-164dd425e808)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7eae6b7b-5335-40ff-bfa6-c166ea518192)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9b3f5f9e-8f67-49f0-9b29-667d923ed8cd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ff966b50-720e-4f42-88d5-9cded49c6b15)(content(Whitespace\" \ \"))))(Projector((id 9792982c-a946-4cec-98ea-350ac5fd9518)(kind \ - Checkbox)(syntax(Tile((id \ - 78dfe112-6bd6-4a6e-995e-4a373f2913d3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1300f336-c7e3-4d0a-8d00-6d5c6621b94c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cc99fc31-d976-4018-babc-39a60ef9300d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d52711ee-5998-4e6e-a93a-899b3e51d404)(content(Whitespace\" \ \"))))(Projector((id b6aa7a9d-a95a-4cc9-8498-0359538f7903)(kind \ - Checkbox)(syntax(Tile((id \ - 48af7b25-b27b-4615-bea2-1149956bb1de)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 665a93ba-af52-47dc-8867-05a020851d2e)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9d693904-e7c5-4880-91f6-b2c1de63ab9d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 309260e4-efea-4228-844a-6eb165afe14d)(content(Whitespace\" \ \"))))(Projector((id 1665bf1d-2c67-4ea3-9d26-f8806c04e314)(kind \ - Checkbox)(syntax(Tile((id \ - 63785709-bbb3-4fd8-bac9-571b300af68c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 28ac1076-aef7-414b-af74-ee4ac0b811a0)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4027b442-10a3-4995-a30e-005e3158e981)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 66945e7e-665e-4c55-b668-bb1948f489ec)(content(Whitespace\" \ \"))))(Projector((id cecf7006-5eed-4764-a92b-b35633b252f1)(kind \ - Checkbox)(syntax(Tile((id \ - d689e03c-ea27-43be-a098-6b824329d0c2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5eed5297-558a-4737-8699-b6ed156030b4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0bb5a11d-8eae-4f9c-bcca-7656ab4ab1fb)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 32e0e52f-620f-4dab-bfbd-2eaea963965b)(content(Whitespace\" \ \"))))(Projector((id 4bd78a59-1435-4d07-b6ec-352dbb6f6a8e)(kind \ - Checkbox)(syntax(Tile((id \ - ca69dcba-558e-4099-ab83-d482796204d6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 26ae2ca6-6508-4377-8995-3664d031b2d0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ de4c6352-e76b-4dda-a013-75cc197d15df)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -4330,121 +3778,91 @@ let out : string * Haz3lcore.PersistentSegment.t = 1e401c54-c691-4423-89ab-68381202d33d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - bddb4c8b-f533-4218-aa45-f10b4ea601c8)(kind Checkbox)(syntax(Tile((id \ - 63bdfba2-d2f7-4290-a8ac-6bff492d91d2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + bddb4c8b-f533-4218-aa45-f10b4ea601c8)(kind Checkbox)(syntax((Tile((id \ f390ebbb-7856-4fb9-a50a-3e645781a9c6)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e7ffb79f-ada2-4715-a0cc-c949e5b735db)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8ed9c1af-a882-4438-bb30-7abdd26e6000)(content(Whitespace\" \ \"))))(Projector((id c7f378d0-17f8-4eb5-870d-828000125476)(kind \ - Checkbox)(syntax(Tile((id \ - db966a13-2063-448c-8b64-ee05b0703067)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 25460681-50c2-43c2-a55d-8bb64bf2b64d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4f209c83-c748-4813-b432-18ff2b17658e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 446d36d9-55f3-47ba-af20-8961820beacf)(content(Whitespace\" \ \"))))(Projector((id bb9e4284-3398-48b9-a6a4-b3b9c8d61dd3)(kind \ - Checkbox)(syntax(Tile((id \ - 399a1205-0fb5-444d-a428-38ad727c6844)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d711d871-1c64-4393-8910-8e6c7d49ec73)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 293780cd-d419-468a-9785-fefeebd082b6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8a2260c5-b7b2-448a-bdfb-407bfe120656)(content(Whitespace\" \ \"))))(Projector((id ad6f8525-4ed0-4c40-910a-8d22905684f0)(kind \ - Checkbox)(syntax(Tile((id \ - 445617b4-24e7-4349-a7ce-68a45200786a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2f6b2afd-4c50-4ecb-a455-5c52340536a5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 698a2874-9db0-4a22-a0cb-4b589bb5358d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4b34553d-0069-4891-a04e-6b86bb40eb2b)(content(Whitespace\" \ \"))))(Projector((id c868770f-17b0-47bc-bf49-313766f1aaec)(kind \ - Checkbox)(syntax(Tile((id \ - b3503d0c-8d0b-45be-8913-3f8fbd1f7f35)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0bbe5dc9-bd90-4187-93d0-47eb835e3ba0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 31f82791-074d-4806-a636-7aaa54fd053a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4da34d7e-57fb-495e-8b53-2296746957ef)(content(Whitespace\" \ \"))))(Projector((id bc57881a-525f-4ff6-9f87-9c0ef3040f1e)(kind \ - Checkbox)(syntax(Tile((id \ - ac900f69-298b-4617-9691-f9446b3b4f0b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 555fe328-25ae-4330-8209-b1b3a2a2b032)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c839bb40-46fb-47f7-8b17-b635bbda0075)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f72c01e5-c7e2-4d79-9aa0-4d5d9c037611)(content(Whitespace\" \ \"))))(Projector((id 166e59a3-1eb7-47d2-9f78-3e84b71ac995)(kind \ - Checkbox)(syntax(Tile((id \ - efc94250-a253-4273-aff1-8aa629da316f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 1c8040d8-17e0-4d8d-9d5f-ac16ba3ad105)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ed641bc1-8037-4c99-ad82-22f31bd83a70)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b015828f-93da-47ec-a57b-c444a94e379f)(content(Whitespace\" \ \"))))(Projector((id 6a17e475-400f-40de-9cc1-1102814ba5eb)(kind \ - Checkbox)(syntax(Tile((id \ - 3385bf84-3c98-4aac-bb6c-4cd1783ee86a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c61f5979-7b83-4052-898c-d18992433f38)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 73995957-dcde-4c0f-b7bd-528893482841)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 39359db7-f0d3-4f67-9f0d-879429d09353)(content(Whitespace\" \ \"))))(Projector((id 799e7ed7-591c-4b78-9b6c-2af266e042a1)(kind \ - Checkbox)(syntax(Tile((id \ - 174c7728-8004-4374-b436-629cf30cdf31)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 33d313d2-4a32-4ae7-a8f9-f314f6772e40)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 47c8ba91-9e55-4604-ab93-810297b7d772)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 35b254d0-abd9-46aa-a74e-c079f99f3533)(content(Whitespace\" \ \"))))(Projector((id 49b81a00-e113-4b19-bd35-4f500f759c0f)(kind \ - Checkbox)(syntax(Tile((id \ - edb06605-ed43-4ab4-b881-7aa1f5060327)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 933f89a0-6880-43a3-ac17-5a6f058c10d8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ c2515da2-27c4-4ef4-a204-046db9ec70af)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -4452,122 +3870,92 @@ let out : string * Haz3lcore.PersistentSegment.t = e1fc69c7-c43a-46c4-9437-946b33c88527)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - 05db918b-edc5-4a6b-9287-8c1c34fbc85a)(kind Checkbox)(syntax(Tile((id \ - ca9c048e-5e9e-469a-a965-676a384fe80a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 05db918b-edc5-4a6b-9287-8c1c34fbc85a)(kind Checkbox)(syntax((Tile((id \ 54b4fe58-70a8-4444-b7b8-44a53b295964)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 50373c60-4e9f-4330-9b36-f80696c12865)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 320493d7-90b2-43de-b293-3ba013fd0b0d)(content(Whitespace\" \ \"))))(Projector((id f56e498c-2289-46f7-b3ae-842e190fb326)(kind \ - Checkbox)(syntax(Tile((id \ - fa6e344f-ef2f-49b7-b56e-f9428de89f1a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6dbed444-46d6-4248-a634-f9dc38dfc5aa)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4758282c-cf27-46e3-a19b-2095dd4b1d5a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 237e6efc-ff32-4846-8655-54194f1535f3)(content(Whitespace\" \ \"))))(Projector((id bac63506-bbb0-482a-8aba-4ff11470260f)(kind \ - Checkbox)(syntax(Tile((id \ - 44312d7f-4ef2-423f-a086-dec044368420)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9c211c5e-38d7-47fb-a53a-33c3a93556f2)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0af6625e-7185-4b76-848a-e6aa69989d38)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 92eaccac-b116-4faa-8247-c056188650e7)(content(Whitespace\" \ \"))))(Projector((id 420454bf-e3ac-4da5-b4fd-c6ff24dc52f6)(kind \ - Checkbox)(syntax(Tile((id \ - fa096ab6-331d-48cf-82bf-15d33810b933)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c96f33ae-38f2-4b62-bc38-5177d44e1b0d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9c51cc6c-6636-4e3f-92e1-95d081d6a3ee)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 066e6195-31ec-4191-943d-96f3cbfb443a)(content(Whitespace\" \ \"))))(Projector((id eb4fc208-8eae-4e88-b3c1-4a3da41bcb76)(kind \ - Checkbox)(syntax(Tile((id \ - 10ba63d6-0db0-461e-b9df-f66735c80c06)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e94ee2c4-1755-4e60-85ec-b647b4fa7bc0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9a6cb132-3573-4de1-bbb3-aec54f9431ec)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 85794fa9-aaab-4ca1-8b6b-e51ee3ba846c)(content(Whitespace\" \ \"))))(Projector((id 77fe3297-b09e-4bbc-877c-6eb99a36238f)(kind \ - Checkbox)(syntax(Tile((id \ - e39c8e1e-49ae-4825-996e-2169fc15b924)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e4df39fd-bf5a-449e-988b-7042580109b5)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1ae0ce2c-e7dc-4c48-af43-161f884628d3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ db41abd1-0a9a-449c-994e-31fba0455bd7)(content(Whitespace\" \ \"))))(Projector((id cac05e5f-5868-4ecf-96e0-864c00677c12)(kind \ - Checkbox)(syntax(Tile((id \ - f186d079-d6bc-4717-bdf5-8fb8204ae3a1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ffb70b18-486d-4fbf-b300-75d4e01ce2b0)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1713db68-7e78-4a8d-a524-e070d9d7e728)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c5469893-51d1-4486-bbba-8d0754c18aa8)(content(Whitespace\" \ \"))))(Projector((id 0a781c86-8151-4288-baf1-be213bd14b3a)(kind \ - Checkbox)(syntax(Tile((id \ - 2de68d2b-a57f-4635-9860-fc44555833b8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 559d566b-07d2-4313-a169-d8236f93a689)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c1e837ae-5b22-413a-8356-e2a67d55e580)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7a69ed3a-2529-4b5e-b7a6-3d2a0ed03296)(content(Whitespace\" \ \"))))(Projector((id 055c667d-2d56-4e4f-bea7-c88e95ef5031)(kind \ - Checkbox)(syntax(Tile((id \ - ffc9df2f-0364-487d-a497-5c552b78d852)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5dac345e-d016-456e-8ee2-dce6347173ff)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 62badcab-892b-40c0-b117-53cbea520365)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1036ef24-35c5-4242-bc1f-c1ac472c8eed)(content(Whitespace\" \ \"))))(Projector((id 269602a9-37a4-4115-9d8e-83e237bdb9c2)(kind \ - Checkbox)(syntax(Tile((id \ - 3148e952-8f9f-4809-9679-4abf5c3a9544)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6ff256c9-805e-4a7b-8f59-27172583f7e9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Secondary((id \ - de7ee636-23bc-4726-ae6a-d94d8fa6cd28)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Secondary((id \ + de7ee636-23bc-4726-ae6a-d94d8fa6cd28)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 4abfcd68-f434-4c3d-93fb-89ed418df64d)(content(Whitespace\" \ \")))))))))(Secondary((id \ diff --git a/src/b2t2/slides/example_programs/B2T2ExampleProgramsDotProduct.ml b/src/b2t2/slides/example_programs/B2T2ExampleProgramsDotProduct.ml index 4c1131dcab..f2f5af5b8f 100644 --- a/src/b2t2/slides/example_programs/B2T2ExampleProgramsDotProduct.ml +++ b/src/b2t2/slides/example_programs/B2T2ExampleProgramsDotProduct.ml @@ -152,13 +152,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ e85a3af3-de8d-49c9-9408-fd94af8f43b6)(content(Whitespace\" \ \"))))(Projector((id aed98db2-aff7-4408-93c7-abb1d7225d3f)(kind \ - Fold)(syntax(Tile((id \ - e8c41f86-338e-462b-b05f-8a6f1af01510)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 4a4f37d4-ab08-4ddb-ac69-32715b9678cb)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 4a4f37d4-ab08-4ddb-ac69-32715b9678cb)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 83137eb5-9744-4557-b4a8-cc43874397b5)(content(Whitespace\"\\n\"))))(Tile((id \ 135d5e3e-65ab-415c-8f18-f3a8301c279b)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -362,7 +358,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 3a0cd0b6-11fb-4a53-a0cf-12f501860cae)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - cb660fd3-49dd-4af7-82c1-e4ff3d5ec2cb)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + cb660fd3-49dd-4af7-82c1-e4ff3d5ec2cb)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ b4da4174-3686-493e-b204-ffb2cd042a3a)(content(Whitespace\" \ \")))))))))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddColumn.ml b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddColumn.ml index a52d88c352..c02c964cdf 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddColumn.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddColumn.ml @@ -229,13 +229,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 69ee06b9-41fa-40ae-85c6-55d2661e7a18)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 39801f6f-8eba-455c-be1d-e2e399f46511)(kind Checkbox)(syntax(Tile((id \ - 0738f38a-d540-42bf-beb0-b2a7721abcb8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 39801f6f-8eba-455c-be1d-e2e399f46511)(kind Checkbox)(syntax((Tile((id \ 189edd94-c784-4681-a51a-a47dc270e55e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f44e444c-26f5-49b0-b2f4-cd2dc8d37013)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -265,13 +262,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ba035293-3077-487b-b3ef-8776f111c900)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - ce487fed-fcf8-4807-9a91-88ac871af661)(kind Checkbox)(syntax(Tile((id \ - 767f6b99-5b23-4397-8c7b-7f17c8b259a1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + ce487fed-fcf8-4807-9a91-88ac871af661)(kind Checkbox)(syntax((Tile((id \ 90b46702-0fe3-4b78-9201-a3778a30b959)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1b9829d5-7042-4efd-aedb-f4632aaf0ba4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -325,13 +319,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 2d0b0aff-c4d1-4cb4-8f20-2038b14178a4)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 028a6fa5-33f1-4145-829b-f3806dec2ec2)(kind Checkbox)(syntax(Tile((id \ - f2ccbbb1-7e91-43a3-a08a-7dcd633a6ea1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 028a6fa5-33f1-4145-829b-f3806dec2ec2)(kind Checkbox)(syntax((Tile((id \ 2b6858df-2028-4488-a4ab-8936361492ec)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a027ccb0-42d9-4eb7-9940-df3c71d5be9e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -367,13 +358,10 @@ let out : string * Haz3lcore.PersistentSegment.t = bde0f4aa-2e9c-4a85-9af0-a5b73d544e28)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - f254d377-ec2d-4dff-a04d-0cbce0ee9b6b)(kind Checkbox)(syntax(Tile((id \ - fffff2c4-c0c4-4c02-8a19-5a6115135f94)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + f254d377-ec2d-4dff-a04d-0cbce0ee9b6b)(kind Checkbox)(syntax((Tile((id \ 8b9b7a39-3e0b-43e1-9331-16598f680a83)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4a1717ab-fc7b-43db-b903-e7f25f9ca52b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -411,13 +399,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 0a074959-f132-44db-b00e-f8da0827c813)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 8912bc49-6159-4ac9-88c5-3fa68c281206)(kind Checkbox)(syntax(Tile((id \ - 87c70f85-3e36-4316-b39a-4e5007046ae6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 8912bc49-6159-4ac9-88c5-3fa68c281206)(kind Checkbox)(syntax((Tile((id \ 6315c77c-dee9-4a0a-82bc-920d99756ab7)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9a65b473-4a9b-4a5d-9b9e-e644b7d0a26f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -455,13 +440,10 @@ let out : string * Haz3lcore.PersistentSegment.t = bc6decc4-8475-4444-8679-6ac1d7879bf9)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 6d102d3e-6e23-4304-b773-cf0b842894fc)(kind Checkbox)(syntax(Tile((id \ - 0d0bb346-24f6-4fc4-8e84-e0f6ebbc068e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 6d102d3e-6e23-4304-b773-cf0b842894fc)(kind Checkbox)(syntax((Tile((id \ 33b1f100-d2ea-434c-a677-42404aaa7d6f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 36d12467-3ae8-4999-ae5b-3b94423ba2eb)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1207,13 +1189,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 73a33014-ca11-4cbd-95d6-c96b2f030e0c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - aaaa31e6-c26f-405e-91d1-a60177589746)(kind Checkbox)(syntax(Tile((id \ - 056c9cc0-a7cd-4885-86a2-8ac1545d9468)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + aaaa31e6-c26f-405e-91d1-a60177589746)(kind Checkbox)(syntax((Tile((id \ 5cbd1b59-1cac-4f1e-8510-1cf06a9a1d4e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 74148a1d-b06d-40eb-ae6c-72359215a0ab)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1243,13 +1222,10 @@ let out : string * Haz3lcore.PersistentSegment.t = c5b649d6-4e02-414d-81ae-15cfa62f459c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - f1cb81dc-6d37-43bd-80ab-32c87b9869b6)(kind Checkbox)(syntax(Tile((id \ - 6c85b1f0-eef9-4cd0-b7b8-345a112ca035)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + f1cb81dc-6d37-43bd-80ab-32c87b9869b6)(kind Checkbox)(syntax((Tile((id \ ccd2ef30-3088-46d8-8efe-fea118b5b75f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5bfd07b8-a7aa-4f5a-a0a8-e766c8ba2753)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1300,13 +1276,10 @@ let out : string * Haz3lcore.PersistentSegment.t = a491b8f1-8896-4452-ba9f-4dbf4b5f6c4d)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 243bb5f0-c3b6-4ff0-845f-c43afd733245)(kind Checkbox)(syntax(Tile((id \ - ee18ce19-4f31-4867-b633-f5d7c46248d9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 243bb5f0-c3b6-4ff0-845f-c43afd733245)(kind Checkbox)(syntax((Tile((id \ d012813e-9b6c-4a93-9b87-ff9491d09387)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6f4e32f2-e22e-414c-8a88-553df94b96a6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1339,13 +1312,10 @@ let out : string * Haz3lcore.PersistentSegment.t = e9b74717-fc31-4a2a-9458-507f573e1e79)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 5e4f6ab9-8aef-4f26-9298-d9b67b11d476)(kind Checkbox)(syntax(Tile((id \ - 7df4ae8a-db8e-481b-8e7c-853d5ae437f0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 5e4f6ab9-8aef-4f26-9298-d9b67b11d476)(kind Checkbox)(syntax((Tile((id \ 43fb7868-0c13-4d91-804f-6a7c9f716325)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 61a78be3-3e8d-49cc-8ba2-a7ca1802dee0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1378,13 +1348,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 7301eef4-439b-4555-89b6-4a7ab7224e4a)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 3edfe576-b9af-439c-aafc-3a8c0292a6d0)(kind Checkbox)(syntax(Tile((id \ - c576c093-fd7a-456d-8dab-c698a6779f5d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 3edfe576-b9af-439c-aafc-3a8c0292a6d0)(kind Checkbox)(syntax((Tile((id \ d0b3900d-3636-4d16-a186-ea85413fa976)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 99f4a526-ff3f-4304-90f1-50478883f033)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1417,13 +1384,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 14ece1b8-6471-4fbd-b7d9-7d6efd92d7f6)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 82477415-28a7-492e-91f3-a8a5e0f799e5)(kind Checkbox)(syntax(Tile((id \ - 2213815f-bd43-41ec-9cc0-b163f99a8a05)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 82477415-28a7-492e-91f3-a8a5e0f799e5)(kind Checkbox)(syntax((Tile((id \ 5d557dcc-725c-41d1-ab22-73816b27b5a1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2963de29-ac83-4f2b-b5d6-59d40f9f4290)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1663,14 +1627,11 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ eae54cab-ca4d-418f-b55d-2651b2b7b4d1)(content(Whitespace\" \ \"))))(Projector((id a16eb9c2-5628-4a69-8360-e3484aef5e47)(kind \ - TextArea)(syntax(Tile((id \ - ffe1cb60-bac3-484c-a4ac-8b400bb393f5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + TextArea)(syntax((Tile((id \ c28df7fe-cb4d-4d2c-9bc0-5f21b23a0e3f)(label(\"\\\"Polymorphic type \ limitation stops most ensured constraints\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 520f5f34-1d25-4e6d-963b-ba4ae3505b0a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1683,15 +1644,12 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ 6100dedd-6dbd-4433-ab06-10fcb526b0a6)(content(Whitespace\" \ \"))))(Projector((id 709ea06c-bd3c-47ad-b216-e7439e9b7eef)(kind \ - TextArea)(syntax(Tile((id \ - 8c2f69a5-bd42-449c-be6f-cbdee317518f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + TextArea)(syntax((Tile((id \ 426ffce9-cc7e-477b-ba6d-a22c9a5aa5f0)(label(\"\\\"Lack of first class \ labels requires writing this with from_lvs.\\\\nIf doing this with \ concrete data you can do a transformation like v1\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8a9ab2cc-abd6-4f33-8606-f17da6256f61)(label(\";\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 35))(sort Exp))((shape(Concave \ 35))(sort Exp))))))(shards(0))(children())))(Tile((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddRows.ml b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddRows.ml index cfc3660f42..9349ac5c4c 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddRows.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddRows.ml @@ -25,13 +25,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 3d15b4fb-12cb-4e9c-b1cc-17db6859ad65)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 570fc0db-4b9c-440c-8305-a9fe8003cfd6)(kind Checkbox)(syntax(Tile((id \ - 5cb80f0e-c34d-439c-935c-c454fb0b170e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 570fc0db-4b9c-440c-8305-a9fe8003cfd6)(kind Checkbox)(syntax((Tile((id \ 122f99ce-cae6-4d37-9deb-93836234423e)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a8534017-a9e1-4ef1-b961-53bdc49264d3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -67,13 +64,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 59ed5092-0f80-44e7-92ff-6bae5c8f2603)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - df473bf0-926b-4921-a714-37edaffa5a7a)(kind Checkbox)(syntax(Tile((id \ - 2adb742a-a33b-418d-95fa-1bc2a58b7df5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + df473bf0-926b-4921-a714-37edaffa5a7a)(kind Checkbox)(syntax((Tile((id \ 9258dc1e-3c2c-4bf8-b9ea-9c3bf3095213)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0a1ad343-77e9-40c4-a29d-f3601977d3d8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -96,13 +90,10 @@ let out : string * Haz3lcore.PersistentSegment.t = e15d65ff-556d-4bd5-bc39-647186af49ba)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e121a7af-57c7-4fde-afa0-68f9f9ce4684)(kind Checkbox)(syntax(Tile((id \ - a33c85a0-9823-4212-b7d8-16f4d9bbdd41)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e121a7af-57c7-4fde-afa0-68f9f9ce4684)(kind Checkbox)(syntax((Tile((id \ c43c7a97-20ea-4284-ade2-df06a0b28e98)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 073f376d-725b-4ba5-b91d-78cded07efb9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -358,13 +349,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 5b418fb2-2541-4414-bbbf-e9683f9ce067)(content(Whitespace\" \ \"))))(Projector((id 933c5a88-28e3-4a39-aa98-543629021946)(kind \ - Fold)(syntax(Tile((id \ - 444a87d0-d432-4b90-9c24-b8f74e6f4de7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 059a44ed-3f4d-4d61-b9f6-e48c2b082656)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 059a44ed-3f4d-4d61-b9f6-e48c2b082656)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 9eed4842-eeb2-48ef-9b9b-fcdabf2debfd)(content(Whitespace\"\\n\"))))(Tile((id \ 578a4cd0-f318-4e22-a899-f760f1555a38)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -568,7 +555,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 3a1c8a0a-9843-4317-8e6c-61d166757b99)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 2531cb86-66cf-4c4d-acd8-6278a473c5b8)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 2531cb86-66cf-4c4d-acd8-6278a473c5b8)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 3be52aaa-2e2f-4309-9da1-dd3ccac6a6a9)(content(Whitespace\" \ \")))))))))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsbuildColumn.ml b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsbuildColumn.ml index 5b3a6b12e9..592198c5a3 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsbuildColumn.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsbuildColumn.ml @@ -219,13 +219,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 1cfc1f9e-2882-44e2-af08-76e5bfebf876)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 02939f41-44c8-4bb4-8127-6843f644331b)(kind Checkbox)(syntax(Tile((id \ - 52b4fdfe-f315-49f0-a338-4f85213efc43)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 02939f41-44c8-4bb4-8127-6843f644331b)(kind Checkbox)(syntax((Tile((id \ 2cc43590-261c-44a6-b552-9ea49c5e4edb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a9685485-7dd8-42b6-b8b3-a51dae3a1a98)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -271,13 +268,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ee8891e5-6db9-4493-9208-c5b394cf3fea)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 5d3ea1c3-42d5-4e5c-95bc-a5c1b8f5cb9d)(kind Checkbox)(syntax(Tile((id \ - baeac429-541c-44dd-9285-f02a9395193c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 5d3ea1c3-42d5-4e5c-95bc-a5c1b8f5cb9d)(kind Checkbox)(syntax((Tile((id \ 3ad949f0-6f8e-4010-8bd2-2efb933c6ac8)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f0c8c234-b6cf-4878-86b6-e6f9fcc9d5e4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -308,13 +302,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 3504884a-5540-4949-ac5d-2766d20c7803)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 7e8466a0-716b-4ad4-a222-97785f1dd95a)(kind Checkbox)(syntax(Tile((id \ - 80281a19-f9eb-4a0d-ba6d-adca17b6b76e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 7e8466a0-716b-4ad4-a222-97785f1dd95a)(kind Checkbox)(syntax((Tile((id \ da137bcf-aac3-426b-bf2d-c378b23242bd)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5fc7f58b-a0e2-4000-9956-81b2aaa85918)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -349,13 +340,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 04dbf7fe-8cc3-4545-8176-1cbfd5037b37)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 9764f383-579e-49fc-9194-1b9554164bbf)(kind Checkbox)(syntax(Tile((id \ - 53862c7a-b4b3-435b-9b42-62611286a420)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 9764f383-579e-49fc-9194-1b9554164bbf)(kind Checkbox)(syntax((Tile((id \ 305a42b8-dbe3-4c62-a382-7761c522aca1)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b457878a-50c7-4eeb-8b77-c167f7059755)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -390,13 +378,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 5113d37f-783e-4817-b4b7-a7d1fee7f5b2)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - a7d4b155-924b-4185-886e-4fbb458b020b)(kind Checkbox)(syntax(Tile((id \ - 968be8fb-e8f5-4e37-aa8f-e3e060ccccf9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a7d4b155-924b-4185-886e-4fbb458b020b)(kind Checkbox)(syntax((Tile((id \ 25810bfe-3fa6-4c1d-9fbd-565e90e9f702)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e8e10b3d-89e0-4ee1-b39c-da1f7e1cf85b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -431,13 +416,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 9d6eee93-2b62-4a32-849f-207dbe884f98)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 48c46d35-1a9d-48b2-8cf7-46cf7cecac1e)(kind Checkbox)(syntax(Tile((id \ - 0df30a7a-b071-4b6c-bd34-ba9db3cfd8e3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 48c46d35-1a9d-48b2-8cf7-46cf7cecac1e)(kind Checkbox)(syntax((Tile((id \ b8c2abd4-a8ee-4ede-80b7-3e6a70d63151)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e0208a75-6854-46bd-80e6-50e2505afc33)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1208,13 +1190,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 3492fcb5-a5aa-4864-86dc-332db27f1350)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 51fb472b-affd-4889-b1e3-d508049e319b)(kind Checkbox)(syntax(Tile((id \ - 888a762f-209d-44aa-8841-a9e843d2de36)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 51fb472b-affd-4889-b1e3-d508049e319b)(kind Checkbox)(syntax((Tile((id \ d5a44ecd-d8ec-4cbf-be17-0e2c8545316f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d2e10440-6dd7-4ef1-b5eb-6491b481d620)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1260,13 +1239,10 @@ let out : string * Haz3lcore.PersistentSegment.t = fe7aeff2-930f-4ac8-a85d-773ed1032328)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 1fb9307b-2790-4181-ab38-e70fd43894f3)(kind Checkbox)(syntax(Tile((id \ - 5af6a9a5-4265-4e3c-98f4-8fb5df130b18)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 1fb9307b-2790-4181-ab38-e70fd43894f3)(kind Checkbox)(syntax((Tile((id \ 67ebf43a-813c-4f09-9675-31c27976bcd8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 76bd48a4-8c75-41a2-887e-92d0349270a9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1297,13 +1273,10 @@ let out : string * Haz3lcore.PersistentSegment.t = b7733fb0-ca27-4cff-ad81-7e92dcdaf363)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b2d541fa-66ac-4fb8-b63d-82b2dc7f261f)(kind Checkbox)(syntax(Tile((id \ - c330322c-cae8-448c-9ad3-8f76f16d4c24)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b2d541fa-66ac-4fb8-b63d-82b2dc7f261f)(kind Checkbox)(syntax((Tile((id \ e8c488f0-5dc4-4e1d-b9ea-978819154ca4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7781d362-3172-4461-af16-ae722c9155a7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1334,13 +1307,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 4d9e48b1-3cd0-46c9-9459-01525fadbe3b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 48d8d250-ab42-429e-93a4-a77648704352)(kind Checkbox)(syntax(Tile((id \ - 97918bae-45e5-442a-afe7-d4426bfd9ffd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 48d8d250-ab42-429e-93a4-a77648704352)(kind Checkbox)(syntax((Tile((id \ 4f88227f-1346-4b39-bc44-20067def688e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f85ccea7-ae8b-4f15-ae18-cd1c45098b5a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1371,13 +1341,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 5e5a2e74-fda1-49e8-b8e7-4f227f96f683)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 6a7eafcf-5fea-4b45-a5ec-076a56a89d88)(kind Checkbox)(syntax(Tile((id \ - df5d8887-d5e8-4d77-82e5-57180bd364d9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 6a7eafcf-5fea-4b45-a5ec-076a56a89d88)(kind Checkbox)(syntax((Tile((id \ 6d9754e1-0b18-4063-8b4a-11b0269c731d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 08ff91e6-8943-42ce-a523-7977edcca29e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1408,13 +1375,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 50325bff-4f05-4309-8f2a-9a8ba5bb55fe)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - a2e45ec5-c663-44c1-a6c3-b9ff8132b234)(kind Checkbox)(syntax(Tile((id \ - 665a4cf0-6350-46a4-81ca-b5bb5e3fc717)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a2e45ec5-c663-44c1-a6c3-b9ff8132b234)(kind Checkbox)(syntax((Tile((id \ 801d6a68-7c1c-414e-876e-b20fc0331b4b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cb563918-60b6-4b6c-a683-23caad0c428e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIConstructorscrossJoin.ml b/src/b2t2/slides/table_api/B2T2TableAPIConstructorscrossJoin.ml index 42717957fc..8a775da37a 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIConstructorscrossJoin.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIConstructorscrossJoin.ml @@ -364,13 +364,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 5fab9f22-b025-47b1-88c9-0b41c673315a)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 992d91ec-15b8-4b7f-822f-7c27ce3df884)(kind Checkbox)(syntax(Tile((id \ - f1571847-e99b-4c31-93e6-9ae2d0b3991e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 992d91ec-15b8-4b7f-822f-7c27ce3df884)(kind Checkbox)(syntax((Tile((id \ 6e73cff6-d66b-4757-a418-29f24484513a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ bc7cb541-9843-434c-985e-6fe8a43bd2bd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -424,13 +421,10 @@ let out : string * Haz3lcore.PersistentSegment.t = be15f6d5-f3de-49a9-808a-5950a1103f71)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 018f20af-472d-429e-8021-00f2a2d56b34)(kind Checkbox)(syntax(Tile((id \ - 84840a9c-30b7-4caa-b416-43a5ba99a89b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 018f20af-472d-429e-8021-00f2a2d56b34)(kind Checkbox)(syntax((Tile((id \ 9c520050-1868-40f8-ad97-6e13f33ca6e6)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7763a86d-26c6-4144-9d75-7b9eab18f0b3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -466,13 +460,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 7a3abada-6687-422d-9d4d-603232930288)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 27f461b5-8181-4f01-bdc5-99b75898ee75)(kind Checkbox)(syntax(Tile((id \ - be8b5452-db38-43d0-833f-cae793e3dd31)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 27f461b5-8181-4f01-bdc5-99b75898ee75)(kind Checkbox)(syntax((Tile((id \ a0f1ccfb-9193-45b5-8ac4-02e457d9c504)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7c73faa8-1790-4f4c-8da1-c4adf0d6c3a8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1497,13 +1488,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 9919a3da-97cc-41b3-9748-915d5fe1f313)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - a5012281-b59d-4506-80b7-033a13939d6b)(kind Checkbox)(syntax(Tile((id \ - 0dea594e-2cb9-4fab-9996-8399da8ac085)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a5012281-b59d-4506-80b7-033a13939d6b)(kind Checkbox)(syntax((Tile((id \ 36a9926c-5606-42f7-b9d4-1422b472cb38)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4ebc32d5-eacd-4e3e-b66b-1cf51b803182)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1557,13 +1545,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 182f76f6-0f63-40f2-b313-8f7bffa2e365)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 42a9d539-8c05-421c-b8bb-0522e072b018)(kind Checkbox)(syntax(Tile((id \ - 9c5dbc5d-42ab-4a93-b10c-a075f6033bd0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 42a9d539-8c05-421c-b8bb-0522e072b018)(kind Checkbox)(syntax((Tile((id \ cc44cf23-1460-4001-855c-d265310c8b2e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2d247aad-5565-4011-8bae-0fe41f022062)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1594,13 +1579,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 47a593b7-5e18-4540-84ee-5a8a3d7cc40c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - ba9ef8c2-8764-4b88-8557-f90880dfd12f)(kind Checkbox)(syntax(Tile((id \ - 0601f25d-cc76-4f0c-9936-57ef31772d2d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + ba9ef8c2-8764-4b88-8557-f90880dfd12f)(kind Checkbox)(syntax((Tile((id \ c79799c8-143f-48db-899c-9ad56bccbb39)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f641fef8-aa33-4dc5-ae25-46952842acc4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsemptyTable.ml b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsemptyTable.ml index a17c625fad..552e62b90f 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsemptyTable.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsemptyTable.ml @@ -46,13 +46,10 @@ let out : string * Haz3lcore.PersistentSegment.t = bba90646-2219-464c-9475-a63099e9f672)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - ecb2b209-a3de-4bb2-be0e-fb6c1beec3d6)(kind Checkbox)(syntax(Tile((id \ - 697b40ca-7b8e-4ce9-b874-6c15c0fc160e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + ecb2b209-a3de-4bb2-be0e-fb6c1beec3d6)(kind Checkbox)(syntax((Tile((id \ 1233dd5d-94a0-48aa-8d65-c1c8aeec136c)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7686db1e-a0a5-405c-a563-d1e9cc507eba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -75,13 +72,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 14839640-8318-44a4-afc0-3a3684ea4c70)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - d61c2c85-f3c7-4dc8-bbe3-face83a47af6)(kind Checkbox)(syntax(Tile((id \ - 85fc4a68-34e3-4bae-99b1-1481a24d93b0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + d61c2c85-f3c7-4dc8-bbe3-face83a47af6)(kind Checkbox)(syntax((Tile((id \ 356a8d65-c7a2-4c52-aec6-bbd0b07fb0cf)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7d6e289e-58f0-4393-8271-76da06310686)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIConstructorshcat.ml b/src/b2t2/slides/table_api/B2T2TableAPIConstructorshcat.ml index 3bebd97500..6cdcbebfbd 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIConstructorshcat.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIConstructorshcat.ml @@ -596,13 +596,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 4533b9bc-8e9c-4762-b61e-47b84eb7b306)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b9697e37-8535-4903-bf31-93f15ef17b0a)(kind Checkbox)(syntax(Tile((id \ - c45ffbd2-f1a7-4717-963c-3e84f1329269)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b9697e37-8535-4903-bf31-93f15ef17b0a)(kind Checkbox)(syntax((Tile((id \ 5ca27f40-6123-463f-a048-e5c402c2c39e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 28b93146-8761-44ac-b326-606955c8ae36)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -633,13 +630,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 5efa422f-2ffc-4e5c-bd35-3de89fd0aaec)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 64552734-2b0d-4e76-bfee-be34cde27d5d)(kind Checkbox)(syntax(Tile((id \ - b66dd31e-5d7c-4634-bbfb-2cf4b9ef37e1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 64552734-2b0d-4e76-bfee-be34cde27d5d)(kind Checkbox)(syntax((Tile((id \ 4d37e977-0775-44df-8df9-d0717d4e6677)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 59aed6e1-51b6-4281-a49a-6a4a4c2e79a9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -690,13 +684,10 @@ let out : string * Haz3lcore.PersistentSegment.t = dff338c8-f9ff-4275-a850-add4b7507d68)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 153ff5b3-9362-4b2a-8085-6857537e9606)(kind Checkbox)(syntax(Tile((id \ - fcd887e6-5b71-4e01-963c-dabf2d4d1480)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 153ff5b3-9362-4b2a-8085-6857537e9606)(kind Checkbox)(syntax((Tile((id \ ed58f0fe-6b3d-4a29-a3b0-3a27c6ec197f)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2fe82c00-86af-41af-80be-61a495ac4465)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -732,13 +723,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 7b686350-0702-49b2-91ef-2cafada71cfe)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - abf7044d-1bf9-47f3-b3ed-2c75d5b5e4dd)(kind Checkbox)(syntax(Tile((id \ - 9971d2fd-0d78-4679-9def-f26a584526ae)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + abf7044d-1bf9-47f3-b3ed-2c75d5b5e4dd)(kind Checkbox)(syntax((Tile((id \ f175500e-a071-48cd-a01f-3a2366b27d60)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3697b784-840a-4cfa-9f25-0196193c4194)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1663,13 +1651,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 09d9a844-2a21-4f9f-9aaa-beb6e1540570)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 8652b1e2-a661-42e3-a403-c1c34fe0e47b)(kind Checkbox)(syntax(Tile((id \ - 172a6ca5-f658-4eaa-bb98-cc0ddaa4b868)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 8652b1e2-a661-42e3-a403-c1c34fe0e47b)(kind Checkbox)(syntax((Tile((id \ df0ca997-7b80-4fd1-b584-e91f447bf4c3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3e2acaec-dd92-441c-9a30-13544753eeb5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1700,13 +1685,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 528b4e8e-7fb6-4b9d-a8db-90f98f2a85b3)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 2dd7c1bd-e462-4211-8715-801326af6e15)(kind Checkbox)(syntax(Tile((id \ - 08f388f9-2230-400c-b4dd-07a30d8f7c10)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 2dd7c1bd-e462-4211-8715-801326af6e15)(kind Checkbox)(syntax((Tile((id \ 5cafdb8d-eae4-469d-9597-2edd11a0d9ea)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ bfeaefd6-a40d-428d-922d-af9a10253aec)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1760,13 +1742,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 761e9535-2319-4741-9108-cf1825639f38)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - be3649e4-8bd9-4510-aa1e-bbb1617daf9a)(kind Checkbox)(syntax(Tile((id \ - 6363af90-de4b-4b47-93f6-f5496ddd4cfd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + be3649e4-8bd9-4510-aa1e-bbb1617daf9a)(kind Checkbox)(syntax((Tile((id \ f30fbc9e-dda7-4dfd-8c56-d25cae7fe974)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 65aee70b-26f3-4308-8664-6506de8b3e6b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1797,13 +1776,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ba8b46a2-8711-4c21-8f5a-e99d10369d14)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 27013c2e-2e2f-4df7-8cab-16e7d1dd92aa)(kind Checkbox)(syntax(Tile((id \ - f36e4c62-76ac-494c-ac6d-9dd8e3882453)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 27013c2e-2e2f-4df7-8cab-16e7d1dd92aa)(kind Checkbox)(syntax((Tile((id \ de693e95-966b-42dc-877b-f39bd96bf394)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6d788ef4-0f37-487a-88e2-ce9a7e31d110)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsleftJoin.ml b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsleftJoin.ml index e5988aa055..33e0988c8b 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsleftJoin.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsleftJoin.ml @@ -611,13 +611,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 675c3734-3d7d-4b83-862a-075183e76064)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e5d3d2db-6e09-436d-832d-0fe94b335c6f)(kind Checkbox)(syntax(Tile((id \ - dec05d85-8286-409d-aaa0-3b04cbeca2b0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e5d3d2db-6e09-436d-832d-0fe94b335c6f)(kind Checkbox)(syntax((Tile((id \ 543264dd-f217-42a4-b00f-46c17c458837)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ aff357eb-282a-4154-99cf-99b3976ca8f9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -651,13 +648,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 247a20be-c5f4-47ea-9340-cf7d4e828853)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 0c7c9b81-682b-46cb-a13f-296399daaa54)(kind Checkbox)(syntax(Tile((id \ - cd05820c-3f41-4cf6-a933-9e681797c71e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0c7c9b81-682b-46cb-a13f-296399daaa54)(kind Checkbox)(syntax((Tile((id \ 0735111a-eab3-4430-b6f3-fafd3e87dd11)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a3de6742-2045-4483-85c7-230271f7120b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -693,13 +687,10 @@ let out : string * Haz3lcore.PersistentSegment.t = b0f4681c-d70f-447d-8c9f-7a19ec23fff2)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 6dcfcf14-be23-4b57-b971-894245e47166)(kind Checkbox)(syntax(Tile((id \ - 9998590a-4477-41fa-b403-f0f006cb1b31)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 6dcfcf14-be23-4b57-b971-894245e47166)(kind Checkbox)(syntax((Tile((id \ 72906450-9696-4bcc-b68e-3e8e035a9db4)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5d23e372-42fa-4ceb-8568-56ec358dd8a0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -735,13 +726,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 8da0ab5a-da7c-4045-992a-64fe1237d7a1)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 40e68ed7-5c44-420d-9da8-c1ab73e34ef8)(kind Checkbox)(syntax(Tile((id \ - f0b42fef-1fb3-4afb-bb45-e3181955aa49)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 40e68ed7-5c44-420d-9da8-c1ab73e34ef8)(kind Checkbox)(syntax((Tile((id \ 8d0a15a4-cc30-49b0-a380-45bd71dd766e)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cefbce52-8aba-4a19-bea3-1d0e070b1678)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -778,13 +766,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 9015f33f-2e93-4c9a-be97-6cf7584ddd97)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - deed361b-03dc-444c-b539-0344bda58766)(kind Checkbox)(syntax(Tile((id \ - 4dfeb246-29c9-45d2-8a95-9661c8c17a0f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + deed361b-03dc-444c-b539-0344bda58766)(kind Checkbox)(syntax((Tile((id \ b2b148c0-7281-47a4-b2f9-4ca3a37e202c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1df55739-a25e-4477-96dd-782238ea98ea)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -837,13 +822,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 11b36af6-ab35-411f-b953-fb56085056f0)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 97652230-cf35-429b-b2eb-f8f3afb4510a)(kind Checkbox)(syntax(Tile((id \ - 606469de-85ec-4129-ae87-0157eb93fc45)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 97652230-cf35-429b-b2eb-f8f3afb4510a)(kind Checkbox)(syntax((Tile((id \ d25983e1-1254-497d-93c6-8359f590178b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fd5c8a94-cfc6-470d-924f-1c765c927b4b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -874,13 +856,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 6bd8d0b2-0aa0-4367-a621-c809d0c2d563)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b0474acb-e484-40a6-8bdd-8f85e81c26ef)(kind Checkbox)(syntax(Tile((id \ - 1c5bd9fd-8fc4-41bd-a8b4-e4f541ffe3a5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b0474acb-e484-40a6-8bdd-8f85e81c26ef)(kind Checkbox)(syntax((Tile((id \ c1694155-d507-4a97-8b01-945a42648ad2)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d110ca78-5eef-4a4c-aa64-1b9d6db009a0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -917,13 +896,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 8e53e2d2-4085-415c-86ea-efd09e15a91b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 0b91164d-aa19-4cb0-be8f-a60f41abb234)(kind Checkbox)(syntax(Tile((id \ - e93644c7-188a-46b7-b068-342c7c14baa3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0b91164d-aa19-4cb0-be8f-a60f41abb234)(kind Checkbox)(syntax((Tile((id \ 815f732b-a8a2-4cf0-9bf6-ba3f28286bb4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 378bc12b-6626-49f4-90ff-4c56238fae75)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -954,13 +930,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 6c52f708-a916-4262-9325-9fdd3d1362d3)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - f1ae4833-9e6a-4744-82ed-dc4b2e144eb3)(kind Checkbox)(syntax(Tile((id \ - 3f9d8e12-3216-4899-9523-521ad0452440)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + f1ae4833-9e6a-4744-82ed-dc4b2e144eb3)(kind Checkbox)(syntax((Tile((id \ 7f86f61b-835e-484c-9b65-b74dc4ae98c9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 52b624d7-af40-4698-9be5-006c5c5a67b2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2418,13 +2391,10 @@ let out : string * Haz3lcore.PersistentSegment.t = e1551b56-e9f5-4618-90b7-57143409c438)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 4611f583-728f-4b33-90d5-04c008504717)(kind Checkbox)(syntax(Tile((id \ - cc449d70-8e2b-4b5e-8b2f-362535c371d3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 4611f583-728f-4b33-90d5-04c008504717)(kind Checkbox)(syntax((Tile((id \ 97ec69a9-117d-40b4-83b6-86db7dbf50f6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c19f6bf8-c47a-4ec1-a6f9-ce1ccadf249a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2454,13 +2424,10 @@ let out : string * Haz3lcore.PersistentSegment.t = f738da13-a57a-45bd-b9f3-a1429cbb6a0e)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 7ff4f7c8-bf4c-4db6-9be5-3e639f034210)(kind Checkbox)(syntax(Tile((id \ - 9e65d422-4902-43dc-89cb-9f3974693f2e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 7ff4f7c8-bf4c-4db6-9be5-3e639f034210)(kind Checkbox)(syntax((Tile((id \ ab4fa69e-92df-47ca-8cea-b2a433e210e1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cc31e3b3-78a0-483d-86ab-cd0b6023b09f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2490,13 +2457,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 36bbc6fa-6ee5-4347-a8f2-79374e47b2e9)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 9efecfaf-d8cd-4b93-b3b0-5e4a7e7d0d3d)(kind Checkbox)(syntax(Tile((id \ - bfe0d590-93d8-48ef-9d26-432f9e6818ac)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 9efecfaf-d8cd-4b93-b3b0-5e4a7e7d0d3d)(kind Checkbox)(syntax((Tile((id \ dc7a34ae-10a5-45c5-96d4-19294982e7e3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c0d97dd4-c2e6-4ebb-8704-ac8119a3aa30)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2526,13 +2490,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 1c4e8adf-b6b3-4cf3-84d6-f719beb3eca0)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 05a09d61-3e1a-4203-ab19-0a5ee706e16e)(kind Checkbox)(syntax(Tile((id \ - f71ff842-1da3-4122-91e5-8fcebfec1c8d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 05a09d61-3e1a-4203-ab19-0a5ee706e16e)(kind Checkbox)(syntax((Tile((id \ faad29b6-e528-494d-9a8a-da6b0818523a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2d28345c-d1e0-4260-bd9e-cdbf035cae4f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2563,13 +2524,10 @@ let out : string * Haz3lcore.PersistentSegment.t = a2218f56-420b-40c4-921f-6ce23eb63c46)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b13d95d2-5d47-485e-94e1-a2b325cbd6da)(kind Checkbox)(syntax(Tile((id \ - 0b36a2d0-f718-451c-ad30-9263f727faa7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b13d95d2-5d47-485e-94e1-a2b325cbd6da)(kind Checkbox)(syntax((Tile((id \ e2fc0199-0ff5-46f9-8521-fd7ca2b5ab70)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2db1413e-a529-43db-8605-1565953ac914)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2622,13 +2580,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 1b691caa-e2ff-477a-9eca-4aaec09741b9)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - c003d75b-d86b-4764-b4f5-001f707afcbf)(kind Checkbox)(syntax(Tile((id \ - 846ef85e-2299-45a9-a57c-60d6ff8eddfa)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + c003d75b-d86b-4764-b4f5-001f707afcbf)(kind Checkbox)(syntax((Tile((id \ 09d9025a-d39e-4e37-809a-56648949557e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ be4ca837-7200-491d-b08e-78efce23647d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2659,13 +2614,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 63b30993-7bc7-4c4f-b242-24d3f3793bc4)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - a16b6bc7-93b5-4682-970a-474bf94a6c4b)(kind Checkbox)(syntax(Tile((id \ - afad9508-1756-4a59-88ba-f88eb76909ec)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a16b6bc7-93b5-4682-970a-474bf94a6c4b)(kind Checkbox)(syntax((Tile((id \ c4c8ea29-6882-4ba2-a11c-f456ab98bea3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1e5291a3-1493-4b22-84bf-0303558fe6ba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2696,13 +2648,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 9e36e316-3537-49c5-aecc-1c93bdfcf4d2)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - a962df22-7f92-4de4-90ee-318ebb38f657)(kind Checkbox)(syntax(Tile((id \ - 02652398-0494-4ed7-a2f8-45c5f05d860d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a962df22-7f92-4de4-90ee-318ebb38f657)(kind Checkbox)(syntax((Tile((id \ d4f54841-c3ef-4690-89b3-136c3a4d8ded)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8c6fd6c1-0fa7-4c56-ac39-b768b29ef129)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2733,13 +2682,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 0944d4c8-b8b8-4e9d-aabb-f9cc01d6f6b1)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - ee6ab916-e410-4c88-8359-2a04d73b6e50)(kind Checkbox)(syntax(Tile((id \ - 8c08f14a-1b0f-4916-9356-097ffafa5ea6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + ee6ab916-e410-4c88-8359-2a04d73b6e50)(kind Checkbox)(syntax((Tile((id \ 67c8ebaf-6cae-407e-a4b7-28c87e6ed928)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9353d7f3-1193-4ea5-adec-e862bb877d29)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsvalues.ml b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsvalues.ml index 0e4b4573be..d7f0a072e1 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsvalues.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsvalues.ml @@ -28,13 +28,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 11e060e5-cbca-47b2-9c38-068bec91f172)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - eefb5209-0d7b-4105-a4be-255a159583a6)(kind Checkbox)(syntax(Tile((id \ - 0d48231c-2247-4315-b2a9-f08637408837)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + eefb5209-0d7b-4105-a4be-255a159583a6)(kind Checkbox)(syntax((Tile((id \ 9b1f34f1-053e-4377-b721-fd0296db478a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 642a219c-0830-4055-85ce-8fab0d61494f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -57,13 +54,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 49ade24f-e037-44b6-a154-a46dc781f7dd)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 6e92b18a-f642-4177-ade1-0afd694b583b)(kind Checkbox)(syntax(Tile((id \ - 3793f7be-52e5-43bf-beec-f2cd7fbcd74b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 6e92b18a-f642-4177-ade1-0afd694b583b)(kind Checkbox)(syntax((Tile((id \ 6f36da65-6e32-412b-8204-721a9d60ac2b)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 24084707-0050-42fc-b490-de082335512c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -100,13 +94,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 658451bf-7ab8-4e2d-8983-42dccd401bcc)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 13da05a8-9f2b-46eb-b30b-72206d2aaec2)(kind Checkbox)(syntax(Tile((id \ - e32a214c-6fba-4df1-91fb-03649f25e1ae)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 13da05a8-9f2b-46eb-b30b-72206d2aaec2)(kind Checkbox)(syntax((Tile((id \ e1be9ccc-2a37-4225-afd4-9b3b1fcd9365)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 143c8308-87e9-443e-aaf5-e4f08276e58a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -129,13 +120,10 @@ let out : string * Haz3lcore.PersistentSegment.t = c6b4d6de-14f3-4d70-be3d-6d9909fb3096)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - f1c53646-dc07-46e8-82a3-60aebaf08b21)(kind Checkbox)(syntax(Tile((id \ - d4aae91e-32e7-4ae1-a1bc-4078539363af)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + f1c53646-dc07-46e8-82a3-60aebaf08b21)(kind Checkbox)(syntax((Tile((id \ 5f25c2d0-1417-484f-8bdf-c4be5591dbb9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 26e25b07-5fb4-44de-8430-3b3de2c77e6b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsvcat.ml b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsvcat.ml index f691ae6be7..874981d3e9 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIConstructorsvcat.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIConstructorsvcat.ml @@ -26,13 +26,10 @@ let out : string * Haz3lcore.PersistentSegment.t = c4f6ba4d-7cae-4e82-8ee1-353c8e19b88d)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 94b9bfeb-933f-4cc5-939b-04df4b99da3b)(kind Checkbox)(syntax(Tile((id \ - f37cc049-9ecc-44fa-aadf-7b89691d098d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 94b9bfeb-933f-4cc5-939b-04df4b99da3b)(kind Checkbox)(syntax((Tile((id \ c1ff5e86-3d7d-411b-864e-789ca7857878)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 437d4863-dc53-4cba-81f2-47b852e8fa94)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -73,13 +70,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 68d81df4-1580-4c91-9bd7-738c75145edc)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 5a9e6e70-9e2c-41f1-90cb-37270815db69)(kind Checkbox)(syntax(Tile((id \ - 23d5019c-706b-46cc-9e6a-e5b6df5538e3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 5a9e6e70-9e2c-41f1-90cb-37270815db69)(kind Checkbox)(syntax((Tile((id \ abf546e2-fd6c-435c-837c-58d388b56da2)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c140ef51-854f-4baf-bc5e-974bd600d0e2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -106,13 +100,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 6181169b-21be-4b02-8e53-c27d83aa1bcb)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 4e005abe-905e-4526-92bf-01a8df7af9aa)(kind Checkbox)(syntax(Tile((id \ - 9e1c9dea-5dfc-47fb-9655-7f6d045c2185)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 4e005abe-905e-4526-92bf-01a8df7af9aa)(kind Checkbox)(syntax((Tile((id \ d8b72bc0-9787-44c1-aa9f-4fcf5287270e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9807d4fd-ae82-462b-8fc2-752dff9b424d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIDataCleaning.ml b/src/b2t2/slides/table_api/B2T2TableAPIDataCleaning.ml index 5ae43b029d..3153e64848 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIDataCleaning.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIDataCleaning.ml @@ -38,13 +38,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 04144858-ece7-4fcc-b65b-340f18a03533)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 66002544-9b0a-4f46-a98c-fdce61bc5ca2)(kind Checkbox)(syntax(Tile((id \ - 3ab7c764-8deb-4bb5-b019-ddc0d3511729)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 66002544-9b0a-4f46-a98c-fdce61bc5ca2)(kind Checkbox)(syntax((Tile((id \ 1529cf61-205a-40b3-92bb-a5d44c48b0f0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f6181a9c-cc08-4bc1-bcf5-fef4293fe520)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -67,13 +64,10 @@ let out : string * Haz3lcore.PersistentSegment.t = c7754c52-2791-4f69-9873-33fc2e8cadd5)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e5b53d5a-5419-4e0e-97e9-b0fd5d0d5e55)(kind Checkbox)(syntax(Tile((id \ - ea568889-e7a6-4ab5-84b0-aa7fbd0d4270)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e5b53d5a-5419-4e0e-97e9-b0fd5d0d5e55)(kind Checkbox)(syntax((Tile((id \ d6e282be-137b-4a22-a69d-de7d273d1783)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ be58307e-206c-44d1-9c02-439a196a9186)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -95,13 +89,10 @@ let out : string * Haz3lcore.PersistentSegment.t = b3e6c72b-57b3-4d0a-b9ec-9f1cdc074b98)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 3278aab8-6bc4-417d-8a77-190214835c45)(kind Checkbox)(syntax(Tile((id \ - 3afd4f5a-dd56-4723-b828-be86c21657ed)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 3278aab8-6bc4-417d-8a77-190214835c45)(kind Checkbox)(syntax((Tile((id \ d02601f4-a0f1-42b8-9706-4be2de08b735)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 320ccde6-ed25-4bff-9665-ef9d06ff4d91)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -123,13 +114,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 527fe59f-3e0c-49e1-994f-71e845ba6f47)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e15a963d-df53-4a4c-8d83-4e3a66fb987f)(kind Checkbox)(syntax(Tile((id \ - 8c752bfa-5060-48d1-b624-5327090be5f4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e15a963d-df53-4a4c-8d83-4e3a66fb987f)(kind Checkbox)(syntax((Tile((id \ 84039f3c-6673-42d3-bc85-73a6784ef955)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 794da461-43d3-4b41-9fa7-f19da08f3ad1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -152,13 +140,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 0c9c7210-6cdc-4a7d-9e7a-99cc93347013)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e6887f39-39d7-4855-948a-456c26eabbff)(kind Checkbox)(syntax(Tile((id \ - 7cd0a60b-6e37-4de1-86cf-2eb67a30984e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e6887f39-39d7-4855-948a-456c26eabbff)(kind Checkbox)(syntax((Tile((id \ f70f0131-53ce-4eca-bbf2-46a56d2927d3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ca90162e-1754-47f3-b713-ff89c51ac8f3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -193,13 +178,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 146b609a-40e6-4310-aecd-36b15073293a)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 71100e88-fcfe-4eea-a699-7897e9671ec6)(kind Checkbox)(syntax(Tile((id \ - abb52caa-3ca9-47b0-9a39-0d0c3634ed0e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 71100e88-fcfe-4eea-a699-7897e9671ec6)(kind Checkbox)(syntax((Tile((id \ 35095554-2dec-45a3-bc26-aefb270c7ff1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 29832b58-1acd-4f4c-8ce6-d1f54b9bc4db)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -222,13 +204,10 @@ let out : string * Haz3lcore.PersistentSegment.t = a9f59a22-d5bb-4357-bd52-3ec80af2731a)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - d0037592-49a0-4a45-a19a-8dec3988d7a6)(kind Checkbox)(syntax(Tile((id \ - 0ae3c3b2-d7bd-4d2f-a9cc-ac3ff8a27944)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + d0037592-49a0-4a45-a19a-8dec3988d7a6)(kind Checkbox)(syntax((Tile((id \ 8c68a546-45b4-4c42-9121-c2b5b80bbe61)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c932d87c-2786-4e0b-99ef-9fadd387d1f2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -251,13 +230,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ff366d1e-bcb7-4239-90f1-0a6c6e979732)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 935d7255-2081-4af9-8114-5a5a7895619d)(kind Checkbox)(syntax(Tile((id \ - a6350b1d-ceb3-4f51-ae47-8476d5c6f729)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 935d7255-2081-4af9-8114-5a5a7895619d)(kind Checkbox)(syntax((Tile((id \ 0834d888-6e41-4f96-a8b1-0ae2e64dbd87)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d673c625-ca4c-450c-ab41-1cb612f2e570)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -280,13 +256,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 99399ce5-073f-4ac6-9b83-99de674cfd5a)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 88768c2c-759b-4b6f-b1e9-1a7ecdf6604e)(kind Checkbox)(syntax(Tile((id \ - c2f9d2c2-5eac-45b2-beda-ca5b9aeb96c4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 88768c2c-759b-4b6f-b1e9-1a7ecdf6604e)(kind Checkbox)(syntax((Tile((id \ 51a970bd-030e-464d-902c-9278419f0988)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fe8f526e-b944-46f1-83f0-3dbebdd400fc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -820,13 +793,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 495ad157-4391-416c-8a67-630dd1f3a506)(content(Whitespace\" \ \"))))(Projector((id 8894e62f-8ba3-4468-ac30-46708fd6abfa)(kind \ - Fold)(syntax(Tile((id \ - ad3500f4-c0f5-41c8-9737-8c91567b1080)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - c4ecfeaa-bcfc-40be-bd6d-0ddbb4060bcd)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id c4ecfeaa-bcfc-40be-bd6d-0ddbb4060bcd)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 0c282732-e136-4b82-81b1-9d60ea78d943)(content(Whitespace\"\\n\"))))(Tile((id \ 7f7dd6b4-d461-4681-bd16-05ba2a9ca97a)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -1030,7 +999,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 8f7590d5-37ce-4230-b6a3-0cc43266c20a)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - b40a8a4c-0f67-489e-b6ae-266ce24a2517)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + b40a8a4c-0f67-489e-b6ae-266ce24a2517)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 1123d825-e622-4757-96aa-7e553e7a2258)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -1047,13 +1016,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ bf06e80c-820b-46b5-87ad-31c4a42542f2)(content(Whitespace\" \ \"))))(Projector((id 4acc9fb1-faed-412a-b27e-ff1fff50008f)(kind \ - Fold)(syntax(Tile((id \ - 2c69e969-e5d4-4218-8144-69d1f7e0e51f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 7e90d1be-1097-40ee-861f-1476d8845841)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 7e90d1be-1097-40ee-861f-1476d8845841)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ c0e7c5dd-8177-41f7-a145-e04840060c58)(content(Whitespace\"\\n\"))))(Tile((id \ 5bf6c521-9eaf-4c2c-b42f-ad15e46de57d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -1735,7 +1700,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 1a5d3f89-94de-4da4-8d68-bb6729a15e0a)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - b15ecaca-1ffa-4c50-9e7e-aae07f7a507a)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + b15ecaca-1ffa-4c50-9e7e-aae07f7a507a)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 9334077a-b55b-41f1-be45-71925752daaf)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -2059,13 +2024,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 80fc279b-6fa2-4fb0-bcb1-11bcc3e8d6d3)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 1889022e-15ff-4dd9-abe2-3f126635392e)(kind Checkbox)(syntax(Tile((id \ - de877aef-ca98-4e33-97f7-ca9d836f1e54)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 1889022e-15ff-4dd9-abe2-3f126635392e)(kind Checkbox)(syntax((Tile((id \ a633a357-b2e1-42f9-b2c1-d497f32e1008)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 35a4892f-a485-46c2-9f52-60d68877fd15)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2087,13 +2049,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 66889691-eac3-4d51-a0b6-99f31947616a)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 37a0147b-2d1b-4501-a700-fe8c3b940f3f)(kind Checkbox)(syntax(Tile((id \ - df1ec687-b763-4e89-a1e1-997385646b85)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 37a0147b-2d1b-4501-a700-fe8c3b940f3f)(kind Checkbox)(syntax((Tile((id \ f55166d9-6f96-4616-aeb4-7e7e7016690f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a46edd5d-21cb-421c-80f1-0deaf72792d8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2115,13 +2074,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 026156bc-a7eb-485d-b4b9-1370443f6653)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 0b96e498-268a-42ab-92a1-cd20f2255c78)(kind Checkbox)(syntax(Tile((id \ - fc0fa4ac-baa0-41a2-b6af-55bbde12226e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0b96e498-268a-42ab-92a1-cd20f2255c78)(kind Checkbox)(syntax((Tile((id \ f3687d7d-2509-400b-8718-cd75352f00e0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fd53ce77-73ff-4b66-958c-83db7d92c792)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2144,13 +2100,10 @@ let out : string * Haz3lcore.PersistentSegment.t = a1f1c194-2144-44bd-8d97-60f9667a2f6c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 33907662-2571-4760-bcec-e3f425698850)(kind Checkbox)(syntax(Tile((id \ - 6d601324-48d6-4e20-b4fc-794aaa18d92c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 33907662-2571-4760-bcec-e3f425698850)(kind Checkbox)(syntax((Tile((id \ 51c1e0b0-00f3-4388-a502-c431da17364e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 36599d98-bc8a-4c68-89e7-e7d227012608)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2186,13 +2139,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 03ff50bd-f449-47a5-a6b8-e6c2d3720fae)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e9ca3942-b194-4869-995f-e896cb7a8cd8)(kind Checkbox)(syntax(Tile((id \ - 1ea63c99-4d20-48c7-ae8a-214a7f9054f4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e9ca3942-b194-4869-995f-e896cb7a8cd8)(kind Checkbox)(syntax((Tile((id \ f626f5a1-cfd3-4ca3-8a51-01316d8150a5)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a135692b-01e5-4f5e-a7fb-28133e9fc0a2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2216,13 +2166,10 @@ let out : string * Haz3lcore.PersistentSegment.t = f8d576dd-04b2-4176-9daf-c91ab4d7e928)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 4f6c09f4-4608-4059-bf87-039062e8362d)(kind Checkbox)(syntax(Tile((id \ - d9f07e69-d6cf-401e-9efd-b349542e2fb0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 4f6c09f4-4608-4059-bf87-039062e8362d)(kind Checkbox)(syntax((Tile((id \ 2cca8813-23ed-4847-814f-7406f6e62fe3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ bf0acca5-10f7-4f43-a89d-521c915d9486)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2245,13 +2192,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 47928ee6-25f6-42ac-a7a8-21e78ba7d8b3)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - cb17cafe-b263-403e-b696-4ecb0ceaeb3a)(kind Checkbox)(syntax(Tile((id \ - 0295b5a2-8e31-44df-aec7-080bacca1a9b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + cb17cafe-b263-403e-b696-4ecb0ceaeb3a)(kind Checkbox)(syntax((Tile((id \ 4b794147-7780-419b-bab5-92f9f2a4d7c4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8f670bc1-81e0-4d9d-8f1e-030ad0647d10)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3351,13 +3295,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 0672fa45-94e7-4131-a07d-9d4d04507193)(content(Whitespace\" \ \"))))(Projector((id f9a59373-b762-4fc6-908d-0de544e935f8)(kind \ - Fold)(syntax(Tile((id \ - 2d4f3194-aac3-4818-9986-5b988eb7dab9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - a5547a58-31b6-465f-9861-9e5342b0be85)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id a5547a58-31b6-465f-9861-9e5342b0be85)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 68c8a4eb-8bf3-4ce2-8b43-c36cdc5cc856)(content(Whitespace\"\\n\"))))(Tile((id \ bd2642e3-f89d-4890-bae2-930306d8491b)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -3433,7 +3373,7 @@ let out : string * Haz3lcore.PersistentSegment.t = f2d4cb66-abf8-4f6a-8c3f-98cd967dd553)(label(\"\\\"red\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 131a2c19-1a87-4b27-b433-2271c07eaf3c)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 131a2c19-1a87-4b27-b433-2271c07eaf3c)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 5517af6a-530a-408f-85fe-58e8c2469330)(content(Whitespace\" \ \")))))))))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIMissingValues.ml b/src/b2t2/slides/table_api/B2T2TableAPIMissingValues.ml index 2ee840036a..4f79636fe2 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIMissingValues.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIMissingValues.ml @@ -153,13 +153,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 49855be7-c1ec-47e4-8946-f6fd50677db4)(content(Whitespace\" \ \"))))(Projector((id 94e36445-153a-475c-b3ec-0f49b59557eb)(kind \ - Fold)(syntax(Tile((id \ - 544a79a2-9a7d-48d0-9108-2bd5b4e7f65a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 4d904c29-8849-4b3e-800d-89aebdb2cdbf)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 4d904c29-8849-4b3e-800d-89aebdb2cdbf)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 53c8f66c-69f6-488c-871f-e821356238b0)(content(Whitespace\"\\n\"))))(Tile((id \ 4d9fc15d-4b49-48ae-880a-616898365666)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -259,7 +255,7 @@ let out : string * Haz3lcore.PersistentSegment.t = b94f1710-961a-4a37-af73-54943f6a7cda)(label(None))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 37a510dc-64b4-4bd8-81c9-8163ef58b1aa)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 37a510dc-64b4-4bd8-81c9-8163ef58b1aa)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ e76f9ab8-1fed-4bd6-a45f-6cc356dd847e)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -304,13 +300,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 5fef6a30-2f6e-4cef-921e-4d68893d0947)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - f1b537b7-21ea-441b-a90d-9cec8bf02090)(kind Checkbox)(syntax(Tile((id \ - d2802de2-8fdd-493d-a257-a910d68d9283)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + f1b537b7-21ea-441b-a90d-9cec8bf02090)(kind Checkbox)(syntax((Tile((id \ f4a6d420-095c-45be-bf80-2a364bdee7f1)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 134c7d37-e5cb-4ff1-bfc1-c0ef10a65a56)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -342,13 +335,10 @@ let out : string * Haz3lcore.PersistentSegment.t = fab91587-fad2-4ea5-b269-f9010f16fbbd)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b9e074b9-7605-4729-a56a-4cb9da9a21a8)(kind Checkbox)(syntax(Tile((id \ - 0adfd345-1014-4ebc-95cf-45a219d4e088)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b9e074b9-7605-4729-a56a-4cb9da9a21a8)(kind Checkbox)(syntax((Tile((id \ f3d17dfc-4ec1-4a87-9bc8-52433801018e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 127ddfc6-f805-471f-bec3-4019096fc0df)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -713,13 +703,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 7f226e04-bd90-422d-99ba-222f695ed399)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b3ebcb0d-37d0-42e0-a99e-91b5508ea91e)(kind Checkbox)(syntax(Tile((id \ - 714693ee-6e5c-4083-a01e-06678ff3043c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b3ebcb0d-37d0-42e0-a99e-91b5508ea91e)(kind Checkbox)(syntax((Tile((id \ 4e7b4df8-4ac7-4c08-bb9a-39f488a5cc45)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ faca364e-d1f6-4fec-9d9e-ed6b99c993d5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -970,13 +957,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ e4c64045-fbb0-4f35-ad97-d1a1dd291dbd)(content(Whitespace\" \ \"))))(Projector((id b2374495-8ccf-4ad2-8281-2104b865558b)(kind \ - Fold)(syntax(Tile((id \ - b00ef1b3-e41f-4cf6-80c2-36372838e8df)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 13089552-e005-4a9b-8103-4f8d2cbae714)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 13089552-e005-4a9b-8103-4f8d2cbae714)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 156e8936-8ad4-404c-ac9c-e545a8a29632)(content(Whitespace\"\\n\"))))(Tile((id \ 37f3b75d-c8cf-4215-a7f1-c20a5686f9ba)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -1094,7 +1077,7 @@ let out : string * Haz3lcore.PersistentSegment.t = dcc84188-a243-4d2c-93e3-834d35119c44)(label(None))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 9d3c2267-3be6-4dd3-ba3a-e85bc92419cd)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 9d3c2267-3be6-4dd3-ba3a-e85bc92419cd)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ d5826b64-61ea-4791-9ee0-26c0e69c920a)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -1294,13 +1277,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 19a4017c-7603-4924-8779-beab93c90e36)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 3c5abb5f-6215-4978-80a8-c03666243050)(kind Checkbox)(syntax(Tile((id \ - babf8c5e-3345-41fc-8b33-666a002b0170)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 3c5abb5f-6215-4978-80a8-c03666243050)(kind Checkbox)(syntax((Tile((id \ 66d43831-9606-43ed-85b7-8c87f298d04a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 08f2135a-5120-432d-9b59-b33d4854cc6c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1322,13 +1302,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 1cd07a8d-7d6e-479b-bd02-3e26f9743244)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e10df8b2-bcef-4bdf-bbf4-7828d6b1b081)(kind Checkbox)(syntax(Tile((id \ - c7c1e5cd-15e8-4570-9825-ee6ca8f17dfc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e10df8b2-bcef-4bdf-bbf4-7828d6b1b081)(kind Checkbox)(syntax((Tile((id \ fc337d22-9491-4947-ad2c-3c6ab80759fd)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 82db42d0-b4f4-4a8b-9516-00be9fc1de86)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1362,13 +1339,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ace73f6a-5280-4f83-b590-cfd82487cfef)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - a1f629c9-d415-486c-8f3c-c11695457ce6)(kind Checkbox)(syntax(Tile((id \ - c2086994-5e87-4a91-b347-9c0a71df36fe)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a1f629c9-d415-486c-8f3c-c11695457ce6)(kind Checkbox)(syntax((Tile((id \ 27187746-f623-4b91-b67b-936e515940f2)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ff4bf1e7-8b3d-48e7-893a-26e3d9366139)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1391,13 +1365,10 @@ let out : string * Haz3lcore.PersistentSegment.t = b9bddd6e-eccb-464a-974f-3bb023670ad2)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - f791289c-d830-44b5-a121-1c849cd65632)(kind Checkbox)(syntax(Tile((id \ - 4efce64f-f87e-43c6-912c-f743910e1c8f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + f791289c-d830-44b5-a121-1c849cd65632)(kind Checkbox)(syntax((Tile((id \ 441aae6d-38d5-482b-b7bc-ab1a50e6e964)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c7d6b8f0-ca73-454d-acba-f045e739ec17)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIProperties.ml b/src/b2t2/slides/table_api/B2T2TableAPIProperties.ml index cfebf74de1..2ea5541e71 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIProperties.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIProperties.ml @@ -58,13 +58,10 @@ let out : string * Haz3lcore.PersistentSegment.t = cb0c4fb9-5818-4497-a509-e793246039d5)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 1f386034-a215-4c4f-8175-dcda5afefd54)(kind Checkbox)(syntax(Tile((id \ - 229b39fe-472b-47e4-90ee-97c44bfa2bdb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 1f386034-a215-4c4f-8175-dcda5afefd54)(kind Checkbox)(syntax((Tile((id \ 589dd35d-7b2e-4298-be69-df5bef75d1ea)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f14363fd-9612-4298-bc2d-846b35b0690f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -181,13 +178,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 664762bd-5f93-4ea7-8c04-75f1977b4359)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 41b6ed9f-434a-4f67-8d50-dbb5e4f56070)(kind Checkbox)(syntax(Tile((id \ - 92e200c7-8fc2-407b-9d1c-c6cd3bb43ede)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 41b6ed9f-434a-4f67-8d50-dbb5e4f56070)(kind Checkbox)(syntax((Tile((id \ f34d303f-1eb9-4fbb-9517-c228a2148f4b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5c3580a0-5453-4e87-b551-7e9fe36b02bf)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -456,13 +450,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 9e9553fd-5b5f-4659-8ab6-b1a54a0ecaea)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b434f769-de82-4e37-8bec-b39829ff8f80)(kind Checkbox)(syntax(Tile((id \ - 8b542f12-3841-460c-b8c0-5317978f574a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b434f769-de82-4e37-8bec-b39829ff8f80)(kind Checkbox)(syntax((Tile((id \ 63dbbf25-a673-4acd-b0d7-43da4392c584)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 851d979a-a0ee-4c41-b321-f68d7fefd995)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPISubtable.ml b/src/b2t2/slides/table_api/B2T2TableAPISubtable.ml index 81feb0a1ad..250d89da08 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPISubtable.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPISubtable.ml @@ -583,13 +583,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 59657cd4-df31-46d5-b96e-9c3ea1479d34)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - f8843495-0ea0-4652-b747-55d7831fe42d)(kind Checkbox)(syntax(Tile((id \ - af792d75-19ca-4ade-a2cf-4ff948ff4fd8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + f8843495-0ea0-4652-b747-55d7831fe42d)(kind Checkbox)(syntax((Tile((id \ 72d18f8e-e162-4a19-98cd-2592f423cf58)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0d87184f-166f-421b-a983-a588903742b1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -637,13 +634,10 @@ let out : string * Haz3lcore.PersistentSegment.t = a5427b60-67d6-4974-9858-c4048c4f0164)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 5a3c89f7-b46f-4193-9e9f-9b8713e0bfbd)(kind Checkbox)(syntax(Tile((id \ - 10222d19-3341-426f-9048-753ff5e57349)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 5a3c89f7-b46f-4193-9e9f-9b8713e0bfbd)(kind Checkbox)(syntax((Tile((id \ bb2f1e04-01a9-4c52-b92d-10c93b4b91a2)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b9d34f79-411b-4622-a29e-0881ccf11eb5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -674,13 +668,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 0369b425-00c0-45fa-a989-0814d3b6150e)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 231bca4e-ccc8-4743-9e54-2ad8f6277683)(kind Checkbox)(syntax(Tile((id \ - c3df5b7a-821c-4fda-b2a1-6c83d7f074b4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 231bca4e-ccc8-4743-9e54-2ad8f6277683)(kind Checkbox)(syntax((Tile((id \ 3d4e8d05-3bfd-4933-a921-368f2f5c6732)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e42f43a0-3c57-43f0-9f2d-c8ee98d38ba2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1070,13 +1061,10 @@ let out : string * Haz3lcore.PersistentSegment.t = dc43d87f-17c4-4a3f-9cb9-3ddcad9d1afc)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 5fa7f075-dc38-41b9-b5ca-c1ff62db8ec3)(kind Checkbox)(syntax(Tile((id \ - 3a630434-eb69-4920-a791-1a3a2a33bc14)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 5fa7f075-dc38-41b9-b5ca-c1ff62db8ec3)(kind Checkbox)(syntax((Tile((id \ 7e3f6cf3-f5a4-41da-a8b5-21362e165a7c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 63c51624-73bd-4ed0-969a-045d1894eb2a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1125,13 +1113,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 48423a23-7284-4d7e-9417-2b077c9ba774)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 28d87761-d74a-4dca-92ab-e02e1070ead6)(kind Checkbox)(syntax(Tile((id \ - 1a73087b-cead-474a-b4b4-9eba556bb36d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 28d87761-d74a-4dca-92ab-e02e1070ead6)(kind Checkbox)(syntax((Tile((id \ f659a730-1206-4cf6-8887-ccc4b79530be)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0276bb06-9f53-4732-8a0e-dfa63779ae98)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1162,13 +1147,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 83ea19e8-a4fe-4a4f-81f5-b3bc8dcb0f2a)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 14c5683a-3e6a-4b83-86ae-e480312919c0)(kind Checkbox)(syntax(Tile((id \ - b36f3820-98fb-4be1-ba50-c18067ae70f5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 14c5683a-3e6a-4b83-86ae-e480312919c0)(kind Checkbox)(syntax((Tile((id \ 78188f8c-893b-45ca-851d-4428e97820bf)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9281ac8d-423f-4595-bdcd-5fdef74a16b5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1509,13 +1491,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 67f2cb3b-af3f-4b39-aa22-3c5c633aa05c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 0fadbbc6-dc67-421c-8355-66ff0a82969c)(kind Checkbox)(syntax(Tile((id \ - e13aea4e-fb4d-45af-86dd-7b3d83e4cffc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0fadbbc6-dc67-421c-8355-66ff0a82969c)(kind Checkbox)(syntax((Tile((id \ 8a8d9a62-c954-4edc-8422-e6f67c8cb279)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 966ad950-ba28-45fe-b43b-3c40948f2160)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1564,13 +1543,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 65b7b315-7668-4632-9abe-c55e6744649d)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - cde1de1c-4b8c-49af-91aa-ef0b1997d280)(kind Checkbox)(syntax(Tile((id \ - 98a21ac5-9b4f-4a48-a923-be22e922d19a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + cde1de1c-4b8c-49af-91aa-ef0b1997d280)(kind Checkbox)(syntax((Tile((id \ 91a1749f-0eec-49b0-8da2-c2d74e9a86a8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 18f687fd-bc01-4804-b66b-994f264ab967)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1601,13 +1577,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 908dd341-7361-4688-839e-f6905438f942)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 9aa99497-7e59-4117-96e1-e330ea85f5e1)(kind Checkbox)(syntax(Tile((id \ - b7442cbe-5024-4716-9bf5-fa0d6aa600f4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 9aa99497-7e59-4117-96e1-e330ea85f5e1)(kind Checkbox)(syntax((Tile((id \ cd530cae-4378-4357-84b0-97f92a71486a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a6476aae-a340-40f1-9b77-1660060410f5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1638,13 +1611,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 814298d7-5c80-4b21-94a1-901efc3916ff)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 61d3f315-0b1b-45d7-8333-c0c2dcc1026e)(kind Checkbox)(syntax(Tile((id \ - 533be29d-3136-430e-a95f-bc7a3fc8236a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 61d3f315-0b1b-45d7-8333-c0c2dcc1026e)(kind Checkbox)(syntax((Tile((id \ 4296af64-1ffd-489b-9c73-dc96692820ee)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 28f83728-522f-40e1-8d94-ec65a88298b3)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1675,13 +1645,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 48cf317f-442e-465e-9feb-560a8af52eca)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - ea4b6383-a15f-470c-b767-5f0720e5bb17)(kind Checkbox)(syntax(Tile((id \ - 5d16606a-13a1-46d7-ae4a-37a8c4a895e6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + ea4b6383-a15f-470c-b767-5f0720e5bb17)(kind Checkbox)(syntax((Tile((id \ 3891fe7c-d13c-450d-afb1-7720d8de372b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 09499e3b-b97b-4a36-89cc-b3a3d9a4864d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2106,13 +2073,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 2ac19948-ccbb-489b-97eb-f9bb17987cbf)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - d3ab7d10-1d02-441f-99ac-899c667efded)(kind Checkbox)(syntax(Tile((id \ - 8e67e961-749d-4dfb-86e3-929723870fa2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + d3ab7d10-1d02-441f-99ac-899c667efded)(kind Checkbox)(syntax((Tile((id \ d775aafd-445c-499e-a448-3d0aeb5bff63)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 651dd3dc-a0aa-4965-aac6-3d1e97a90842)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2142,13 +2106,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 985ac22b-8792-4435-bafe-babfb8a6e737)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 979e3acc-1de6-407b-a64c-405ee0b93f0c)(kind Checkbox)(syntax(Tile((id \ - 565f6d2f-242d-4e94-931a-b4aeb93efdb5)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 979e3acc-1de6-407b-a64c-405ee0b93f0c)(kind Checkbox)(syntax((Tile((id \ ffc1413c-a577-41e7-b336-6999193af3b6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9906905d-73e0-4f9b-9e19-97f810893d1a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2201,13 +2162,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 179bab39-b923-48c6-8bbb-2e1db7e9362b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - afc35a21-f841-4fd4-8190-8d8992949252)(kind Checkbox)(syntax(Tile((id \ - d9ede691-a791-45fc-8115-fbde7b8c92b1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + afc35a21-f841-4fd4-8190-8d8992949252)(kind Checkbox)(syntax((Tile((id \ 55642c9f-d39f-4316-9c6d-82ac852c2844)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d924cdd2-432a-448a-abda-b228351882cd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2238,13 +2196,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 33597d3d-a768-43fb-8ca6-1c532368653e)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - c17fe619-1200-4234-bf57-3212b8d90eab)(kind Checkbox)(syntax(Tile((id \ - 312e9ba1-8011-44c4-9efe-b82720411a9e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + c17fe619-1200-4234-bf57-3212b8d90eab)(kind Checkbox)(syntax((Tile((id \ 2ae20cf2-8405-4539-9599-cc8fd92ccba8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ddbc6b56-b031-4260-b0a1-1f583515ad9a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2275,13 +2230,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 03bc6b57-001c-4c35-a780-c318e0704b4a)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - bdfd4be0-048e-42c4-b2d7-8e19286cde2d)(kind Checkbox)(syntax(Tile((id \ - 5e8e80fa-b4a4-490a-bc99-f121c253e887)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + bdfd4be0-048e-42c4-b2d7-8e19286cde2d)(kind Checkbox)(syntax((Tile((id \ 3c9bd569-e90f-45a4-9613-9d667965c9ac)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8e9fc3e9-42cf-4183-a540-fb975e52a29d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2312,13 +2264,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 3f2a7f27-4629-43ca-8282-62b1160af7e9)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 17fa38a8-3d46-47ad-9533-71db7cad3e99)(kind Checkbox)(syntax(Tile((id \ - 0e77a995-e8c2-4956-bcba-decac6716f83)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 17fa38a8-3d46-47ad-9533-71db7cad3e99)(kind Checkbox)(syntax((Tile((id \ 0153382a-c827-4481-b093-bfce73f173a6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 8e2a884c-2414-4e9b-a96f-4056f986cc7c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2717,13 +2666,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 2c147d80-aabe-46a1-ab13-94008832ec9c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 45b94906-a6c0-4b12-b671-76402607916a)(kind Checkbox)(syntax(Tile((id \ - 4c7323ae-87de-4f31-b4fc-9f905c2c3343)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 45b94906-a6c0-4b12-b671-76402607916a)(kind Checkbox)(syntax((Tile((id \ ff8b89cc-35ee-41f6-ab7d-ca4dcf96e80d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ead2a9e2-64aa-4a08-b754-fd06cb8686f0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2753,13 +2699,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 8d36e75f-797c-4190-8573-9ed7aac6a796)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 693d5730-c624-40d2-adfb-e05ee26d5bc0)(kind Checkbox)(syntax(Tile((id \ - 6f56f992-5df6-4ef9-ba68-c9834025af03)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 693d5730-c624-40d2-adfb-e05ee26d5bc0)(kind Checkbox)(syntax((Tile((id \ 552b030e-6734-4c11-8174-9aefc81e1fc7)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b7b57877-b7e5-42e8-b0d1-8ea0a3f2e25f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2809,13 +2752,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 98b303b3-1c6c-44bd-af64-85084cde494d)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - d55a18d2-e934-4aa7-a1fc-e4786dc6b4f6)(kind Checkbox)(syntax(Tile((id \ - 365321f3-2f70-4b15-97c4-61fc9aa8ff35)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + d55a18d2-e934-4aa7-a1fc-e4786dc6b4f6)(kind Checkbox)(syntax((Tile((id \ 1e04ae2c-a706-438e-a2a9-2903644b0fe6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7c0315b0-f0f2-40f9-a204-1244178371ff)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2846,13 +2786,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 4de42e24-b180-4a04-a684-339856cfa513)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - c000b456-e6f0-4177-9a0c-f966d37b2f03)(kind Checkbox)(syntax(Tile((id \ - 7b6ab97a-9e4a-4554-8c23-db88e1dd73e1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + c000b456-e6f0-4177-9a0c-f966d37b2f03)(kind Checkbox)(syntax((Tile((id \ d5a5ba2c-4443-4646-bb7a-bf612b8ab8fc)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 41bbb39e-8f1d-4ac3-b371-b1c3bc71707d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2883,13 +2820,10 @@ let out : string * Haz3lcore.PersistentSegment.t = f8525f2f-3997-4c2f-a5da-a664bed9699b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 74b9c10c-4903-4249-903a-db1bb613458f)(kind Checkbox)(syntax(Tile((id \ - eacfecfe-80cf-453b-b521-8abecfa0b416)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 74b9c10c-4903-4249-903a-db1bb613458f)(kind Checkbox)(syntax((Tile((id \ f2a03f52-f8ed-4eb5-8e95-9c2167328ada)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4736d332-3fc3-4aa9-9138-350bef52f7b7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3459,13 +3393,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ebb81755-25bb-4abe-99ab-00774470a99c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 7f2488b4-76b3-49b1-9114-e3a9cfc49d6f)(kind Checkbox)(syntax(Tile((id \ - 53147d2d-1058-4f11-9a68-ad5f06b06121)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 7f2488b4-76b3-49b1-9114-e3a9cfc49d6f)(kind Checkbox)(syntax((Tile((id \ e78feba3-ce35-44d3-be83-55aa872b195f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 82b9cdf3-d038-4c78-a60b-426a89d9145d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3495,13 +3426,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 36c7e1db-5b96-4575-b9fb-cf1b7db47261)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 21640b47-6400-46e7-9ec3-34dff60ca7d9)(kind Checkbox)(syntax(Tile((id \ - e0757a0f-c850-42e7-b8ea-054455f5042a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 21640b47-6400-46e7-9ec3-34dff60ca7d9)(kind Checkbox)(syntax((Tile((id \ 4cd9299a-bf1c-4758-a27c-1ea73ebea708)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f54b2d99-1bb2-432f-bdb1-0ac7293a8b36)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3551,13 +3479,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 6643ed95-5055-4c1f-adbb-f4111e8947ab)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - cd8a6b7f-a869-4c31-aa5f-4dee3ff2694a)(kind Checkbox)(syntax(Tile((id \ - 4a8e534b-3180-4010-8255-33a6c66ffb1d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + cd8a6b7f-a869-4c31-aa5f-4dee3ff2694a)(kind Checkbox)(syntax((Tile((id \ df07ac9e-7e58-47da-8daf-3e8b6162c6bc)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2e3fa252-b383-43d9-9b13-5616a6cbe211)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3588,13 +3513,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 782e7ced-3dc4-46bb-9b88-4918fcef0b70)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 2d75c7d0-b190-4ad5-a4ab-5474d2ee17e3)(kind Checkbox)(syntax(Tile((id \ - 80087309-6715-4f4b-bf45-77166853123d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 2d75c7d0-b190-4ad5-a4ab-5474d2ee17e3)(kind Checkbox)(syntax((Tile((id \ 1dea56f9-1c15-46e3-9a96-f911140e2b56)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4f2c8a07-2783-4808-9538-8443316bbdf1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3624,13 +3546,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 59d267de-33ae-45cd-aed4-5dc573d1345d)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 24527121-a269-4420-baec-3c5ac3ebdf5f)(kind Checkbox)(syntax(Tile((id \ - bc266d95-e786-4812-99c9-9eed95dd3b41)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 24527121-a269-4420-baec-3c5ac3ebdf5f)(kind Checkbox)(syntax((Tile((id \ 53cc4007-5e15-4e40-a8d7-2504f119531f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 19a6f11c-998e-4d5b-9d5e-5bb8defc9915)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -3939,13 +3858,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 981c16db-63a7-4473-b25e-a4b947344f52)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 121e6af6-90fb-448c-b728-b1a6ec150c3d)(kind Checkbox)(syntax(Tile((id \ - 34e41648-9b4b-45b8-8116-a5ed8eb3707f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 121e6af6-90fb-448c-b728-b1a6ec150c3d)(kind Checkbox)(syntax((Tile((id \ 3e0884db-77cd-4408-8cf8-778bbe2ae76f)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 03d93a38-fa38-4b17-9678-1f95df9a9c44)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -4270,13 +4186,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 85c6fe36-4cf5-413f-b6b1-8626f384e2ca)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 983fd067-dc77-4254-8b8d-1e5132c48d80)(kind Checkbox)(syntax(Tile((id \ - 8eb00741-fc07-4256-8383-3615c3493504)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 983fd067-dc77-4254-8b8d-1e5132c48d80)(kind Checkbox)(syntax((Tile((id \ c3debb8b-08db-4fe0-bdff-d6c684d56218)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d70ea7f5-ed34-4c3a-9c61-bab01302d7d7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -4325,13 +4238,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 2d551d84-a835-4fb3-839e-e199c3f0e960)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 218cd46b-efdd-4681-9487-fc0e3e6dd5e4)(kind Checkbox)(syntax(Tile((id \ - 9f8efb82-9402-4311-a667-aeb23c0c3ad6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 218cd46b-efdd-4681-9487-fc0e3e6dd5e4)(kind Checkbox)(syntax((Tile((id \ e64af241-b27c-4d7d-9d32-3b23a45b56e9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ abaa4f3d-b386-431b-a39b-f91dc6a34791)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -4362,13 +4272,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 2d326250-d0cb-4132-b148-be9399737769)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 1e1a7811-916a-4cd2-ba42-2e6c9f83aa3e)(kind Checkbox)(syntax(Tile((id \ - 5b8d1b4a-da20-4d7d-b30f-f3708797712c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 1e1a7811-916a-4cd2-ba42-2e6c9f83aa3e)(kind Checkbox)(syntax((Tile((id \ ce7466d6-dc00-4f1e-9766-1432813e4a40)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cb7a16a0-d21a-43de-aed5-bf35a0bd2331)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -4403,13 +4310,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 36bc2b4c-ef23-44ed-99fc-8efcfa3651c8)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b18d745d-61de-4b0d-b2cd-bad59dc14d80)(kind Checkbox)(syntax(Tile((id \ - b781a0f8-fb82-4773-a64e-2f1f40814600)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b18d745d-61de-4b0d-b2cd-bad59dc14d80)(kind Checkbox)(syntax((Tile((id \ b0d732a8-0fe6-44ed-a406-ff42fde8f4df)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f4a83871-1a33-4fd0-9d23-2043d84e0b5b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -5378,13 +5282,10 @@ let out : string * Haz3lcore.PersistentSegment.t = dd5fb26c-678b-4359-bb8c-4d65b5d4e329)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - c6da95e7-ffb8-4786-8fc9-3e44080c3141)(kind Checkbox)(syntax(Tile((id \ - a49e4511-b6d0-4743-8061-d20f3043ed85)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + c6da95e7-ffb8-4786-8fc9-3e44080c3141)(kind Checkbox)(syntax((Tile((id \ 2f608c31-8034-43e7-942a-507e68fe8820)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d564a335-b326-4f25-a182-fe0b505c24f2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -5418,13 +5319,10 @@ let out : string * Haz3lcore.PersistentSegment.t = fdd15d99-b9a9-46ee-85e8-8c799586d23b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 5f6c29ef-c8e4-44fc-b1b0-a183fa96be83)(kind Checkbox)(syntax(Tile((id \ - 794cb666-f1e7-4a2e-8c9c-800adfc54ad4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 5f6c29ef-c8e4-44fc-b1b0-a183fa96be83)(kind Checkbox)(syntax((Tile((id \ c1d6af72-90bb-44ac-a828-18120f93c96c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 85a4c93e-33bb-49d9-bc59-864c81a94d7c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -5474,13 +5372,10 @@ let out : string * Haz3lcore.PersistentSegment.t = fdf05f01-39f2-476a-b697-2cd6472ac94b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 9d458c39-8e02-4ec2-957c-7b4ddabe97d6)(kind Checkbox)(syntax(Tile((id \ - bf49c8f3-7e6c-41ca-90be-75f33d4d70cd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 9d458c39-8e02-4ec2-957c-7b4ddabe97d6)(kind Checkbox)(syntax((Tile((id \ d7274910-b0f9-4855-897b-caaf8a9d6470)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9c3e4dc3-96df-424b-aca8-9ecb409d0082)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -5511,13 +5406,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 89c0867a-adc0-4ffe-8cc5-e33db5daa39f)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 9adbf1cb-f285-4842-b7d2-a8515320bea8)(kind Checkbox)(syntax(Tile((id \ - afb8fad1-8193-4269-9e3c-933ae017da4c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 9adbf1cb-f285-4842-b7d2-a8515320bea8)(kind Checkbox)(syntax((Tile((id \ 0f5530b1-0be4-4730-ac24-ec8f4e1cc5bf)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9ec392fa-22d0-41a5-82ab-2eaa9923ed3c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -5552,13 +5444,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 43bec5f3-4713-43b9-bac2-ec5cff9a7342)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 5ed29510-6e2d-4bf5-8518-88785e672168)(kind Checkbox)(syntax(Tile((id \ - 2cb3c0fe-edd0-4425-99ba-f7de169a548d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 5ed29510-6e2d-4bf5-8518-88785e672168)(kind Checkbox)(syntax((Tile((id \ 93be4745-008c-48f9-9965-7360b5ec6d28)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6f330d64-3562-4eaf-b7ee-106374e9735d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -6484,13 +6373,10 @@ let out : string * Haz3lcore.PersistentSegment.t = f0dc87dc-14a6-4a97-b321-cc12b7d85b0e)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - f9e09270-f857-4a63-b0e0-cdda5789cfec)(kind Checkbox)(syntax(Tile((id \ - 9e485806-2b7d-4d31-832a-70a3c23b361b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + f9e09270-f857-4a63-b0e0-cdda5789cfec)(kind Checkbox)(syntax((Tile((id \ f07f3a4f-4e1b-44bf-aa7d-64364a7d6337)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9ba3e4fe-6f19-49b5-8e07-d26cac1f4b8a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -6527,13 +6413,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 6fb3c6dd-7c06-4520-990e-2a5cf5ff7d03)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 6c181a1d-6cf1-4b95-bd67-f28d55beaff6)(kind Checkbox)(syntax(Tile((id \ - d75b58d0-81e0-45d7-90dc-d3e08ada29d0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 6c181a1d-6cf1-4b95-bd67-f28d55beaff6)(kind Checkbox)(syntax((Tile((id \ b861c0d8-3879-4787-bf04-85bcb1ec79ac)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2ced765a-cdf7-4fa3-9c13-20cf9b3a0cf8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesFlatten.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesFlatten.ml index 41c572f599..dca11977dd 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesFlatten.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesFlatten.ml @@ -112,13 +112,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ d4162179-f1a7-4141-b9de-46dc8e221bee)(content(Whitespace\" \ \"))))(Projector((id 35c75a8b-bab0-48d3-807c-388d95ddbc0f)(kind \ - Fold)(syntax(Tile((id \ - 682a2e3f-6b59-46fb-8327-77b00d27f772)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 0ad4a105-13e5-4fcd-9a79-7008076bb1cb)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 0ad4a105-13e5-4fcd-9a79-7008076bb1cb)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 3a888a2d-273e-4a9a-b042-ced400ce86b5)(content(Whitespace\"\\n\"))))(Tile((id \ c826fcf9-2cc1-4b9b-af98-28ac2bffc570)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -328,7 +324,7 @@ let out : string * Haz3lcore.PersistentSegment.t = c2191fc4-0376-4857-8bfb-834b3446c3a7)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - e05eb59c-e91b-4107-8a04-f8e961896d17)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + e05eb59c-e91b-4107-8a04-f8e961896d17)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 8a61303f-f5f8-41aa-ac2d-3375f10ab1cd)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -356,13 +352,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ec46d1b8-3104-44af-8acc-88915b8c7b44)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 23f4a60b-1be2-4195-aa43-766b39876407)(kind Checkbox)(syntax(Tile((id \ - 10f31911-95cc-4ec0-895f-c5fc9781c386)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 23f4a60b-1be2-4195-aa43-766b39876407)(kind Checkbox)(syntax((Tile((id \ 5a07be81-6c8b-4efc-935a-f7ebd1bb77af)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1e806405-83dd-4a55-931c-46370087c693)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -384,13 +377,10 @@ let out : string * Haz3lcore.PersistentSegment.t = cfbb6ee0-1c78-43df-8954-7ede88b4eb62)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 29c46876-7ce3-432c-b177-ffb17f621c44)(kind Checkbox)(syntax(Tile((id \ - 76cd081e-78b2-4c1a-866a-549f665c6932)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 29c46876-7ce3-432c-b177-ffb17f621c44)(kind Checkbox)(syntax((Tile((id \ 54fa4409-ed0a-4f61-8931-d5b496f88876)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 587c8985-f89c-4d71-8fdb-b8b6a6b8c248)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -412,13 +402,10 @@ let out : string * Haz3lcore.PersistentSegment.t = e5808c21-0e96-488b-be8c-e0769895997c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 979cacf0-496e-4b02-92d1-0cfe9f935bec)(kind Checkbox)(syntax(Tile((id \ - 16eb71a3-ecef-4b44-87ff-c796cdec0717)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 979cacf0-496e-4b02-92d1-0cfe9f935bec)(kind Checkbox)(syntax((Tile((id \ 508d70e6-b007-44bd-b7f7-21082ad0643d)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4881d61a-0cee-42b6-87ff-0221875560b5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -441,13 +428,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 5ded2940-9360-489c-952d-cbede3a0e43b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 7b872501-0a2b-4b98-b586-4c7cac6cad47)(kind Checkbox)(syntax(Tile((id \ - 2dcb63e5-8ce5-414c-bf9b-895cf513e2ec)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 7b872501-0a2b-4b98-b586-4c7cac6cad47)(kind Checkbox)(syntax((Tile((id \ c964477d-73b3-4523-8ae2-e5867638c44b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e123df64-62ce-4da3-80cf-50b382ba047b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -483,13 +467,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 0db864c1-f73c-45ec-81fb-1d485f8b9814)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 7358fca2-9847-489c-8d64-f505ec02a080)(kind Checkbox)(syntax(Tile((id \ - 6bc4f8fc-86bb-4020-a968-a465e57a725a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 7358fca2-9847-489c-8d64-f505ec02a080)(kind Checkbox)(syntax((Tile((id \ 45544d0b-5524-4e07-9b1b-3a9a1dd43e31)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f226db3a-6612-416d-98e8-0037939b4ad7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -512,13 +493,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 98de3cca-6979-40a6-8035-d8f40072379c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 980b1606-6dd2-4563-9838-17430ae49321)(kind Checkbox)(syntax(Tile((id \ - e7d177d7-403f-4252-8663-cc611af4dc84)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 980b1606-6dd2-4563-9838-17430ae49321)(kind Checkbox)(syntax((Tile((id \ 710948df-812e-4591-8515-d336d24504d7)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e282f414-7992-475d-8a04-d41566e39f70)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1312,13 +1290,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ b1ce4a62-ea26-49b8-a5ed-4de45346f564)(content(Whitespace\" \ \"))))(Projector((id 372eca1b-11ed-458c-9b45-1d91f4f7aee3)(kind \ - Fold)(syntax(Tile((id \ - 3aa99562-a6cb-4c6a-bf44-36e6364d31a4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 16ca9cbb-bf55-4a1f-8cf8-c2a33bc6179d)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 16ca9cbb-bf55-4a1f-8cf8-c2a33bc6179d)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 149965b2-acf1-41f3-bfdc-40380c9a49bc)(content(Whitespace\"\\n\"))))(Tile((id \ 5fcae9c3-cdd8-47bf-98c0-7202a9c260f0)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -2190,7 +2164,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 861b1a3f-163d-4c58-bab8-9a908d2e567a)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 52951785-a686-44bc-968c-34774579859e)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 52951785-a686-44bc-968c-34774579859e)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 46d4b891-db57-444d-a930-836a0b8cc33c)(content(Whitespace\" \ \")))))))))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesfind.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesfind.ml index 92b15276b2..83ac725c0c 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesfind.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesfind.ml @@ -83,13 +83,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ e7d566d1-741a-4a6f-b941-aef0ac4f27c7)(content(Whitespace\" \ \"))))(Projector((id a22775a3-0547-46ed-acf2-aa8cfcdfb8c2)(kind \ - Fold)(syntax(Tile((id \ - 8b5f7c9a-445c-4c3c-b2ab-030c14005330)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 4d5d6107-c586-48c6-845c-a1c4a5800e2b)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 4d5d6107-c586-48c6-845c-a1c4a5800e2b)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 55b89909-8953-4757-9b68-cdbb13d02ce2)(content(Whitespace\"\\n\"))))(Tile((id \ 2fecc482-a29b-464a-b35f-74d4d760cc6c)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -165,7 +161,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 99f52146-5250-40ef-a678-6aaeb5331034)(label(\"\\\"red\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 1d18ddd4-614f-4bdb-bebe-55b2971289dc)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 1d18ddd4-614f-4bdb-bebe-55b2971289dc)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 7ec2b335-9ec1-4461-a3fe-6e5c9aced963)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -195,13 +191,10 @@ let out : string * Haz3lcore.PersistentSegment.t = c1a2b631-0229-4979-80d8-c144707d677b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e51b34ee-b0f7-4fa7-8a8b-a81acdaee4ca)(kind Checkbox)(syntax(Tile((id \ - c76c1114-ac39-4568-a87e-bb62617d3ea0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e51b34ee-b0f7-4fa7-8a8b-a81acdaee4ca)(kind Checkbox)(syntax((Tile((id \ 3d8fcc26-36ef-44cd-845b-e56237395d16)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1dbe6f5d-fef3-445b-98cc-b8eab10c7b75)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -223,13 +216,10 @@ let out : string * Haz3lcore.PersistentSegment.t = e21d667c-e8db-4ea5-aa67-93703360af08)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e49570f6-8f94-4a5e-bffa-b1e3e4d8efa4)(kind Checkbox)(syntax(Tile((id \ - dc9cba25-01c4-4007-b06f-5f399c8f42e2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e49570f6-8f94-4a5e-bffa-b1e3e4d8efa4)(kind Checkbox)(syntax((Tile((id \ 362c3af6-9d32-4f66-8307-f47ddc52536a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ee467d51-d43a-41a9-b5cb-ec06f9ac05da)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -266,13 +256,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 0a11d5e8-d8d8-4e5a-b39d-474b5fa7bbec)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 0929ebf6-ebfa-4905-af93-1fdad6c237f7)(kind Checkbox)(syntax(Tile((id \ - eb64af3e-16dd-4274-b6a8-9ae0f43d1950)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0929ebf6-ebfa-4905-af93-1fdad6c237f7)(kind Checkbox)(syntax((Tile((id \ edae0b1c-bcf8-4a22-a073-660ba3b72fab)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4006d5df-9c74-488d-ae18-1c6221de0ad8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -295,13 +282,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 43dee4c9-a0ad-4f44-83a0-227fcd987241)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 0abed003-e008-435f-9157-7e47b66738b9)(kind Checkbox)(syntax(Tile((id \ - b513b97a-6227-4a47-aa00-a326024bb302)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0abed003-e008-435f-9157-7e47b66738b9)(kind Checkbox)(syntax((Tile((id \ 8e6ecab2-d9ec-4d2c-96ec-b353e2cf1eeb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 41811419-214b-4041-a425-c802e3d762dd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupBySubtractive.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupBySubtractive.ml index 44364a6a4b..ecbd32a3f9 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupBySubtractive.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupBySubtractive.ml @@ -83,13 +83,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 6a95ae90-671c-4451-b746-3881b0462e20)(content(Whitespace\" \ \"))))(Projector((id b9d1cd89-6dfa-4c3a-ae8f-9a5fd8dd83a8)(kind \ - Fold)(syntax(Tile((id \ - b9d6b250-177f-482e-9993-3965ccd564ec)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - bca232c6-a8bb-4e2c-b623-3105293b5d23)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id bca232c6-a8bb-4e2c-b623-3105293b5d23)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 6db81b4c-292d-48cd-945c-4b73dc1970b6)(content(Whitespace\"\\n\"))))(Tile((id \ b1589df0-3977-4b13-8305-d7b8b6efc62b)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -165,7 +161,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 495dec27-c962-45d9-a965-687d33890eff)(label(\"\\\"red\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 89ee406e-4ee7-4fa2-a263-3c026eedc628)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 89ee406e-4ee7-4fa2-a263-3c026eedc628)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 857e4987-7dbd-4114-a250-86fc84c17077)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -195,13 +191,10 @@ let out : string * Haz3lcore.PersistentSegment.t = d46d23f7-6ef0-491c-91be-fce81589a513)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 667f2a5b-1746-4e88-8450-32ae9edc6518)(kind Checkbox)(syntax(Tile((id \ - 5a719814-1f59-4c83-9bbc-42c89d96ac83)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 667f2a5b-1746-4e88-8450-32ae9edc6518)(kind Checkbox)(syntax((Tile((id \ f80ce47f-fb77-489e-8df7-ac283bdbc173)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 787a70c4-b585-40e9-839a-ab99eed0ec56)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -223,13 +216,10 @@ let out : string * Haz3lcore.PersistentSegment.t = d2cf4ec7-de3a-420d-8621-c7ed955dac3e)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - c44c27e8-d2a7-471e-b5a3-a9327ab383f2)(kind Checkbox)(syntax(Tile((id \ - a8d43cbd-3632-4439-99b7-24a06d113060)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + c44c27e8-d2a7-471e-b5a3-a9327ab383f2)(kind Checkbox)(syntax((Tile((id \ b35b3128-ea2a-4884-baeb-6b76f984f798)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0dee2241-b08d-46e5-b8f0-7a2f63ede513)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -267,13 +257,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 36f5bad6-49c0-4e46-809c-21fbf393806b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 06404b87-cc36-4af7-b038-214abbed7683)(kind Checkbox)(syntax(Tile((id \ - afe27393-44ce-4615-aa30-8971eca8f6f7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 06404b87-cc36-4af7-b038-214abbed7683)(kind Checkbox)(syntax((Tile((id \ 6a2c4a04-12b4-40e4-92ea-d59e8701fc06)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e1e895ec-0b57-4386-9e43-969efd1be3eb)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -296,13 +283,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 919d6280-4c8f-4008-8396-6eb09eaf2991)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - bf4036c9-be28-4252-879b-0b68f6fb8324)(kind Checkbox)(syntax(Tile((id \ - 7e9f1f07-d050-4c9f-9bc1-39563c566de4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + bf4036c9-be28-4252-879b-0b68f6fb8324)(kind Checkbox)(syntax((Tile((id \ 92d8ccec-622f-4f8f-ba2f-6f862d88cdc2)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 245bd57a-42bd-44f3-89d1-3fd05ec08b59)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -325,13 +309,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 70d93a6f-6cc3-4dad-a8c9-1249bcb54a4b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 540d3ee8-423c-4f3b-b3e1-d1bc6e770dc8)(kind Checkbox)(syntax(Tile((id \ - 6ba86532-3340-4ccd-918f-b495c133fa4c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 540d3ee8-423c-4f3b-b3e1-d1bc6e770dc8)(kind Checkbox)(syntax((Tile((id \ f4dc655a-84f3-43ca-95df-c9eae44e8f1f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 749e86ab-8501-48cf-950d-94d28689b9e8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -354,13 +335,10 @@ let out : string * Haz3lcore.PersistentSegment.t = e859eb5e-73f8-4892-b9e0-b9c5da962e7e)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 3b08cfaa-5ab9-451f-a885-93e8313b0227)(kind Checkbox)(syntax(Tile((id \ - a1804777-03cb-46e8-9162-5d669c56bcf6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 3b08cfaa-5ab9-451f-a885-93e8313b0227)(kind Checkbox)(syntax((Tile((id \ 0c93a3c1-62e5-4cdb-88cb-6ad1cae01167)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 76093bca-94e3-47c5-9d00-3d1bf180bbda)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -383,13 +361,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ae59fb83-170a-4d28-97b4-f749047995ed)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - ebc7185e-db8a-4fc6-a1fc-781d17d0a6de)(kind Checkbox)(syntax(Tile((id \ - cf71c809-2ab5-42d3-8e93-88f30f5907f7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + ebc7185e-db8a-4fc6-a1fc-781d17d0a6de)(kind Checkbox)(syntax((Tile((id \ ae58e390-fe2d-4df4-afdb-7be5c4c3ad3c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2aa83e59-551b-45a4-ab9b-14f68319592c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -412,13 +387,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 29a1adf9-c921-4020-9393-9e461ef161d5)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 17bc4d31-630b-4fe8-a3ee-949edb2fc328)(kind Checkbox)(syntax(Tile((id \ - ddeffc3e-995d-4c0d-b158-2cb90b15d041)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 17bc4d31-630b-4fe8-a3ee-949edb2fc328)(kind Checkbox)(syntax((Tile((id \ 9e082c89-2020-4501-9eb7-02c9cb2ec6ea)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 74128e4f-0588-4e50-9bbf-7276ef96499a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -441,13 +413,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 7687a557-e34a-403d-9c36-75ae97fe7524)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 065e3cd2-a89d-4f94-bcb8-c174f9e869fb)(kind Checkbox)(syntax(Tile((id \ - 04e4ad5e-3709-44d5-924c-e1f38e04f049)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 065e3cd2-a89d-4f94-bcb8-c174f9e869fb)(kind Checkbox)(syntax((Tile((id \ 995d1f3e-8881-47d3-b712-2a72563a09bb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 53b3295d-6113-40ea-b80e-a9d023d2135d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -485,10 +454,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 6fc86ed4-eae5-4922-8d9e-246019e34094)(content(Whitespace\" \ \"))))(Projector((id 50cee923-d991-406e-90db-97abb3cfadac)(kind \ - Fold)(syntax(Tile((id \ - 69f68a40-0b22-42eb-926e-db8328d9e1d1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Fold)(syntax((Tile((id \ fcbb04b8-74e6-40fd-8472-40da672e96bd)(label(fun ->))(mold((out \ Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ 37))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ @@ -615,7 +581,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 22))(sort Exp))))))(shards(0))(children())))(Tile((id \ d2de876a-6229-413b-af45-3f2690f37d4e)(label(value))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Exp))))))(shards(0))(children()))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 44106f03-1c14-4c9c-981c-5fb4906a8796)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -1156,13 +1122,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ b4f995c4-2123-4d1e-b215-a7716c1cddc4)(content(Whitespace\" \ \"))))(Projector((id 47ad8d71-44e2-4e6c-bab9-fa9cfd709e6a)(kind \ - Fold)(syntax(Tile((id \ - eb07387a-af9e-45b0-87be-dd928a2c5725)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 468a454c-b25e-4268-bd4a-57d7fa5660d7)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 468a454c-b25e-4268-bd4a-57d7fa5660d7)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 97d5c9d2-5428-45a5-a647-8d6b78cccbb9)(content(Whitespace\"\\n\"))))(Tile((id \ 5230d2a9-599b-430d-b409-d5f63fe306b5)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -1328,7 +1290,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 2a5dce34-33a1-4015-8967-e64b64a2e43d)(label(13))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))))))))))))(Secondary((id \ - b7c604ff-7fab-42c8-bc90-d07af0a87579)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + b7c604ff-7fab-42c8-bc90-d07af0a87579)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 51577cd2-896b-4927-8dd4-f1d7bc25f2ac)(content(Whitespace\" \ \")))))))))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupJoin.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupJoin.ml index c06ecb4ba9..d7c64a279c 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupJoin.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupJoin.ml @@ -153,13 +153,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ c27e3faa-d6e6-4872-b05e-d0ee73ee5b2c)(content(Whitespace\" \ \"))))(Projector((id 074fa8aa-cd46-414d-a040-5499ff22e7c9)(kind \ - Fold)(syntax(Tile((id \ - 14781ccf-6b1a-45cf-9af1-b9e51e7df0ea)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 39bf31e2-fad1-49b0-8996-2d30271e1b1b)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 39bf31e2-fad1-49b0-8996-2d30271e1b1b)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 0ccbfa8c-7d8f-401b-a9b2-5cbc26fa56a3)(content(Whitespace\"\\n\"))))(Tile((id \ 03df1cae-bafc-447c-868a-1511e73166fc)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -363,7 +359,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 6637fb74-11d3-4848-bc3b-55d751dcc58a)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - aca73bb3-8bb4-4dc5-899e-361efa24ddaa)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + aca73bb3-8bb4-4dc5-899e-361efa24ddaa)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ ce88aec5-9db8-45b9-b149-c71e1e2e2926)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -447,13 +443,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ d25883c5-01e2-4a10-b154-8ff5cf056acf)(content(Whitespace\" \ \"))))(Projector((id c20f09c1-1567-4da5-85d7-fc320b43d8e9)(kind \ - Fold)(syntax(Tile((id \ - 102f16d4-d3e5-448f-8abf-9eb737684c1d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 4e20eaed-3ce1-43bf-8a37-7135a768204b)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 4e20eaed-3ce1-43bf-8a37-7135a768204b)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 0c62bb44-ea98-4671-8a8b-694c8f7376c0)(content(Whitespace\"\\n\"))))(Tile((id \ cdd47bdb-a88a-405b-b37f-0806b51f7003)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -529,7 +521,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 0a55a61d-d760-415d-b880-81f06a5e82bd)(label(\"\\\"red\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - c0961505-c7aa-48dd-adca-b39c3b72d067)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + c0961505-c7aa-48dd-adca-b39c3b72d067)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 04bb6e4a-e12e-4f71-b17d-ecc88ff27df0)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -570,13 +562,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 7a7a2c70-f18f-4437-ab44-7a6990a233fb)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b1cbb7f3-e618-4274-9e97-a1a16adccd05)(kind Checkbox)(syntax(Tile((id \ - c40a9800-5c48-46bd-a595-479962163982)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b1cbb7f3-e618-4274-9e97-a1a16adccd05)(kind Checkbox)(syntax((Tile((id \ bf1bf5ef-8df1-436b-a0d8-5e0797ac75a9)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 99d15613-3492-42e3-9b16-a9115ae5a547)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -599,13 +588,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 62ba1a96-d436-418b-910d-dc808f1c19d0)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 88342181-bd64-4f64-a45a-29782f3699b5)(kind Checkbox)(syntax(Tile((id \ - 516be934-9185-4839-bbfa-45bf9e5f8c07)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 88342181-bd64-4f64-a45a-29782f3699b5)(kind Checkbox)(syntax((Tile((id \ 8677c3ce-30e1-4b51-ad5b-e3f8af9934ff)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 183d36c3-3d15-4068-b7cd-e1c97863135b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -628,13 +614,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 8f55e5cf-aa70-44da-a5f2-7aa0b9422acb)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 434b08c1-0adb-4d1e-b646-7d7eb6c26b7a)(kind Checkbox)(syntax(Tile((id \ - 6860290e-444a-40a2-aa9f-d4e1a692f7e6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 434b08c1-0adb-4d1e-b646-7d7eb6c26b7a)(kind Checkbox)(syntax((Tile((id \ 505de789-2b1c-43b5-90ce-270218929c69)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e6722356-6741-45d5-bcf9-ad6dc14453ad)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -657,13 +640,10 @@ let out : string * Haz3lcore.PersistentSegment.t = dc700705-d834-44b0-a23c-dc3c5b9f2c12)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 2044bd59-bbff-4f01-af25-d2bca479227e)(kind Checkbox)(syntax(Tile((id \ - 9147dfe0-4ac5-41e3-a0b8-19ea31aec64b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 2044bd59-bbff-4f01-af25-d2bca479227e)(kind Checkbox)(syntax((Tile((id \ d51db4a7-3e25-4512-9e8d-ad98df40c269)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 58a1da1d-1983-4c4a-8cb1-7c20d722b385)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -686,13 +666,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 570e7b9e-b5ec-45c4-91d6-6940b86e1342)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - af508caa-6455-422a-84d7-99449bcd71a8)(kind Checkbox)(syntax(Tile((id \ - bbcfd818-5aae-4e80-aa2e-35f32619177d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + af508caa-6455-422a-84d7-99449bcd71a8)(kind Checkbox)(syntax((Tile((id \ cb0669bb-bde0-481a-b3c2-7a7ff834351f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4af25274-7ed0-4077-8446-dbaaef72e5fe)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1276,32 +1253,23 @@ let out : string * Haz3lcore.PersistentSegment.t = c8e2e5c1-f12a-4a46-9338-6db0566ace5b)(label(@< >))(mold((out \ Exp)(in_(Typ))(nibs(((shape(Concave 23))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Projector((id \ - 7455462f-68c3-4a23-a48f-16d5f53b8c80)(kind Fold)(syntax(Tile((id \ - 16429cf1-14e2-431f-b7d9-443e02a24da6)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0 1))(children(((Tile((id \ + 7455462f-68c3-4a23-a48f-16d5f53b8c80)(kind Fold)(syntax((Tile((id \ 9bea324c-03a8-4b43-81cc-b6fb75d41344)(label(Student))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0))(children())))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Typ))))))(shards(0))(children())))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\"))))))))(Tile((id \ 4490342b-0458-4230-948f-dbe6f43fad23)(label(@< >))(mold((out \ Exp)(in_(Typ))(nibs(((shape(Concave 23))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Projector((id \ - a61d8389-8104-430f-ac1a-9594cf2d09a8)(kind Fold)(syntax(Tile((id \ - bcd75213-2826-4fbe-b7fc-072f31d109e1)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0 1))(children(((Tile((id \ + a61d8389-8104-430f-ac1a-9594cf2d09a8)(kind Fold)(syntax((Tile((id \ 22e23f7c-5d4a-4174-aca3-d986c6d1d538)(label(GradebookEntry))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0))(children())))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Typ))))))(shards(0))(children())))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\"))))))))(Tile((id \ f43cba4b-155e-4b69-9bb5-769d3b0d6a88)(label(@< >))(mold((out \ Exp)(in_(Typ))(nibs(((shape(Concave 23))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Projector((id \ - 422b8c8c-294c-4bc2-9854-6730c0202c84)(kind Fold)(syntax(Tile((id \ - 9c2ef3d0-1d36-42e9-ae05-28349b60a4c7)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0 1))(children(((Tile((id \ + 422b8c8c-294c-4bc2-9854-6730c0202c84)(kind Fold)(syntax((Tile((id \ eba535f8-210f-482a-b4fb-e86462c92e68)(label(\"(\"\")\"))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ Typ))))))(shards(0 1))(children(((Tile((id \ @@ -1355,7 +1323,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 39))(sort Typ))))))(shards(0))(children())))(Tile((id \ 818cba61-77ce-4cb1-9b96-df685a0cf5b1)(label(Int))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0))(children()))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Typ))))))(shards(0))(children()))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\"))))))))(Tile((id \ dbbacbf8-0e5a-46f8-ab41-93cc9c9a5354)(label(@< >))(mold((out \ Exp)(in_(Typ))(nibs(((shape(Concave 23))(sort Exp))((shape \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesjoin.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesjoin.ml index 47f8b0f7de..5d7124e453 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesjoin.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesjoin.ml @@ -153,13 +153,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 09d0ee84-9d14-4f26-a25b-8a08a51f4ac2)(content(Whitespace\" \ \"))))(Projector((id 3764a13a-9fb7-414b-b410-78e633b64e53)(kind \ - Fold)(syntax(Tile((id \ - 06af9086-e938-4ab0-8cc5-2d4f85e8e013)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 0a808058-561f-44f9-afb3-7e97537344f3)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 0a808058-561f-44f9-afb3-7e97537344f3)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ a7792690-30df-41b8-9a1f-a022c8ec7316)(content(Whitespace\"\\n\"))))(Tile((id \ 7fa4ad9d-16d5-47af-be9e-3067d632fbf6)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -363,7 +359,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 60992f62-591b-4f78-a361-c4243022bbca)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 916fa5fe-23ac-41e5-ba9e-98135e6c5dfd)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 916fa5fe-23ac-41e5-ba9e-98135e6c5dfd)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ f65ca1b3-85c1-48cb-ac5f-89bac0acc37b)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -447,13 +443,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ ecb28492-f761-4fe5-a6a8-c7e1b5e2fc77)(content(Whitespace\" \ \"))))(Projector((id c215a931-6621-4efb-8ed5-b626521d2515)(kind \ - Fold)(syntax(Tile((id \ - 768dac85-2b18-40fe-ab68-9ac99749fc5c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 8d0240d8-6e1c-48d0-85a6-3facb57721b2)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 8d0240d8-6e1c-48d0-85a6-3facb57721b2)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ e7ac2c1b-88a2-434e-bdde-b612674db8fb)(content(Whitespace\"\\n\"))))(Tile((id \ fd120028-2643-4984-a7d9-62f475c329d5)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -529,7 +521,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 876e9687-b7de-46e2-8118-4c99ba40a3f0)(label(\"\\\"red\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 7ea52402-4e7f-4465-8432-d450f886a373)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 7ea52402-4e7f-4465-8432-d450f886a373)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ e0fc26ef-fdc4-4f7f-9cd5-9d43ee693ce4)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -570,13 +562,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 6f597afe-39b1-4745-9a6f-14b2d4a413f8)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 88349dd0-0365-4702-9bd9-24c5f5f332e8)(kind Checkbox)(syntax(Tile((id \ - f8a5dec4-fcbf-4468-b9a1-577eda531e2d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 88349dd0-0365-4702-9bd9-24c5f5f332e8)(kind Checkbox)(syntax((Tile((id \ 0c25db11-343c-417b-88f3-96528a8ebec3)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ab9c49e2-2929-46ac-bbca-a44bc397ff15)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -599,13 +588,10 @@ let out : string * Haz3lcore.PersistentSegment.t = b33e663d-65b0-48bf-b581-644213da9369)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 7f465ac4-bf6b-4693-a4e6-53be7e41e9d0)(kind Checkbox)(syntax(Tile((id \ - 39137c93-4c4b-458f-b30e-4ab6679c6e4a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 7f465ac4-bf6b-4693-a4e6-53be7e41e9d0)(kind Checkbox)(syntax((Tile((id \ 598a173a-82a7-4c54-bfe7-b31732b4cbb0)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ef76da25-2064-46fa-a995-e81d979df29b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -628,13 +614,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 65c48f2e-6a04-47a6-a7ee-7787d8f1d572)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 933d95ff-c933-465d-9acb-2e043275b3b1)(kind Checkbox)(syntax(Tile((id \ - 4ef7e441-22d5-47f0-a512-541f0d71ae1a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 933d95ff-c933-465d-9acb-2e043275b3b1)(kind Checkbox)(syntax((Tile((id \ 83e94e9f-17b5-4bef-906a-62321d20a720)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 95ef5ed7-61a2-4003-9917-f32b27c8f9bf)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -657,13 +640,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 84ca840f-8304-43fa-92da-428a0dcd42b9)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 5490febe-445b-4628-b104-41df30b1fca6)(kind Checkbox)(syntax(Tile((id \ - 037142bb-cbc6-4e49-8f4c-ccefd998b3cf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 5490febe-445b-4628-b104-41df30b1fca6)(kind Checkbox)(syntax((Tile((id \ 63214293-b835-4ea7-b2e3-b1be1d5be000)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 480ea2dd-f227-4e60-893c-00dd7c756c1b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -686,13 +666,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 42d29490-affc-49f5-9d59-539cbb807bd3)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - c20b2bb3-342f-4453-abb5-9ea2ab21fea3)(kind Checkbox)(syntax(Tile((id \ - f56328a6-cd93-455e-85ac-759306cc9b37)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + c20b2bb3-342f-4453-abb5-9ea2ab21fea3)(kind Checkbox)(syntax((Tile((id \ a55d4417-61b1-432a-affd-5a15e07e9301)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 656c91a7-cf2e-43df-8add-f850da617f4b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesrenameColumns.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesrenameColumns.ml index ad7408623a..0894ba0b5e 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesrenameColumns.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesrenameColumns.ml @@ -83,13 +83,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 95b95114-5120-43a5-9f76-cad5f0df0e13)(content(Whitespace\" \ \"))))(Projector((id f2c4b7d2-4959-43ce-b65b-0064c729b445)(kind \ - Fold)(syntax(Tile((id \ - d18be506-40ad-4611-adfe-1e5ffb718ebb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 75c4bbb7-b556-445d-90a1-d7aa33d9ad17)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 75c4bbb7-b556-445d-90a1-d7aa33d9ad17)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 79c27f5f-f4d2-4015-ad09-c1023932a931)(content(Whitespace\"\\n\"))))(Tile((id \ 73d8b9ef-79d7-453b-8231-096acf8d24d0)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -165,7 +161,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 6b31bee0-c18f-44b6-89a0-f816207cf5b7)(label(\"\\\"red\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - c3d7aef1-8d44-4ba7-b096-21833b66521c)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + c3d7aef1-8d44-4ba7-b096-21833b66521c)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 366f5ee8-f9d7-4a88-a43e-21cf4c5b71f0)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -195,13 +191,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 4b028fff-d155-4509-b274-fcc1c842d18c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 4a668be8-60e8-406e-b9e3-6a4048967279)(kind Checkbox)(syntax(Tile((id \ - 04de33dd-5b1b-4262-b423-5a5ad111de8e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 4a668be8-60e8-406e-b9e3-6a4048967279)(kind Checkbox)(syntax((Tile((id \ 8be7040b-14a9-4592-a077-2e7c57d71deb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5b21b0b8-e30c-401a-8aea-0e79458fd84f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -223,13 +216,10 @@ let out : string * Haz3lcore.PersistentSegment.t = a24fcce2-3a3c-4305-9758-73c32edad0a3)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 06695174-b2fe-4719-a37f-0b289007b11d)(kind Checkbox)(syntax(Tile((id \ - adb70286-123b-4d46-83a7-29388c2d3110)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 06695174-b2fe-4719-a37f-0b289007b11d)(kind Checkbox)(syntax((Tile((id \ a44670f2-0dd5-4446-981d-e0c22257d5a8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b5db0ca6-0333-4956-aaa4-deb1ddc893c5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -251,13 +241,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 425a4c1a-a03e-49b0-9f8a-96f6360d6ce6)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 78746efb-6703-426a-acb7-ff925735ec72)(kind Checkbox)(syntax(Tile((id \ - 44d869d6-b56d-459c-99cf-61a43ec81557)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 78746efb-6703-426a-acb7-ff925735ec72)(kind Checkbox)(syntax((Tile((id \ 9c21ddf3-7cf0-4619-886d-8e768d5c5254)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b17e5c61-ef59-4b41-825a-aa1fd7a7e1d5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -296,13 +283,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 19f03385-79ef-446c-8027-6905130fb229)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - a0602a71-83ed-4953-b6bb-972069a1500e)(kind Checkbox)(syntax(Tile((id \ - 1e1e721b-16ea-4700-8984-c6c32e881326)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a0602a71-83ed-4953-b6bb-972069a1500e)(kind Checkbox)(syntax((Tile((id \ c9b3e6ba-770b-42f2-bd04-0b4fd9bc7bea)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 32aa6920-bb48-4a48-98a8-0c1193c697e4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -326,13 +310,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 8f8cc659-0b04-4e7f-b8f5-3123869bd935)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - bb510458-a37b-4349-bc17-65b9f1ecd72c)(kind Checkbox)(syntax(Tile((id \ - d255649d-e06f-48ea-aa15-588607f64116)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + bb510458-a37b-4349-bc17-65b9f1ecd72c)(kind Checkbox)(syntax((Tile((id \ 4019c993-41ca-48ee-9b9b-6547c919440f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e31f0bdc-0f93-4e3e-aa04-7505b8357615)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -355,13 +336,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 53bf118b-9d1f-4828-8968-e608849b1bd9)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - a55c48bf-761d-483d-b0ca-bedcdf799b72)(kind Checkbox)(syntax(Tile((id \ - f5ea1abd-628c-4eb6-9d60-cea5f5810361)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + a55c48bf-761d-483d-b0ca-bedcdf799b72)(kind Checkbox)(syntax((Tile((id \ b67b2c36-c4e0-493f-b99c-7fe79fdf5ba3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 522c7744-ce90-4b3d-b61a-cdca5d9a61d8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -384,13 +362,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 32da0ffd-2ba3-4a9b-8f68-e6fca0cc059e)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - ba26c82c-1332-489d-9b46-5291d30655fa)(kind Checkbox)(syntax(Tile((id \ - 1d0396c6-e692-4b9c-b535-606d499ae065)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + ba26c82c-1332-489d-9b46-5291d30655fa)(kind Checkbox)(syntax((Tile((id \ 0da2af78-5d71-4b79-b510-610984462388)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5be9bf3d-2a4c-4cb4-8e0b-e881b7f33c49)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -744,13 +719,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ f27c87d3-b463-4743-bc42-d837876e33d2)(content(Whitespace\" \ \"))))(Projector((id 2cc30c49-26e6-435b-98cd-503f6b25037e)(kind \ - Fold)(syntax(Tile((id \ - d7a10c93-222d-41d8-9d14-9605b851972e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 6fbfc9e3-d8f5-4eb9-b622-eaf9156cc2f2)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 6fbfc9e3-d8f5-4eb9-b622-eaf9156cc2f2)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 2a9b2df3-dfd8-4c90-a006-34893f7a2788)(content(Whitespace\"\\n\"))))(Tile((id \ 6a87194f-819c-4338-b10f-6f2abccf901c)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -880,7 +851,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 2326103f-fba2-4c90-8355-5afe62507d75)(label(\"\\\"red\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - fa1aa88b-6015-4247-8691-c39d58094846)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + fa1aa88b-6015-4247-8691-c39d58094846)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ b553586f-18c0-44a1-8193-71cf384ce873)(content(Whitespace\" \ \")))))))))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselect.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselect.ml index c8539c71c7..369afe41ae 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselect.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselect.ml @@ -83,13 +83,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 617c00d1-65e7-4277-aba5-aa572f893c8c)(content(Whitespace\" \ \"))))(Projector((id 334ad5d6-a5d7-4323-988d-e5074cb054aa)(kind \ - Fold)(syntax(Tile((id \ - a0290a76-fa77-4c2c-8338-10e194d22899)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 9348345f-4b0a-473a-ad8e-8845e94c67cc)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 9348345f-4b0a-473a-ad8e-8845e94c67cc)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ ce6b1549-24e6-4b02-8fb6-69f645f93c96)(content(Whitespace\"\\n\"))))(Tile((id \ fa254e92-a908-4cba-9d8f-ea17fda055bb)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -165,7 +161,7 @@ let out : string * Haz3lcore.PersistentSegment.t = b67c4448-b46c-44be-9f29-11e8ba295824)(label(\"\\\"red\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 3b1bcc42-4941-43f4-af84-c16a2eb8d6f1)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 3b1bcc42-4941-43f4-af84-c16a2eb8d6f1)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 3dd66862-25a8-409b-96eb-69ae226dd852)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -206,13 +202,10 @@ let out : string * Haz3lcore.PersistentSegment.t = c5945f25-ff7e-427b-9a40-84648bcee0b7)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 6c9e4ab7-9aff-4dd5-ae84-e0351d78cb14)(kind Checkbox)(syntax(Tile((id \ - 22d44dc1-0f01-4d8b-9c56-a92c4dc7243e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 6c9e4ab7-9aff-4dd5-ae84-e0351d78cb14)(kind Checkbox)(syntax((Tile((id \ ca7227e5-bc88-4a86-a333-9f184b280cfb)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 7be0b156-646c-4709-af6c-32656dc27a12)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -235,13 +228,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 8d498e17-c202-4f4a-aec1-a781fdd6a507)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 99c75e22-719a-44a1-a93c-5ef4816a7ee7)(kind Checkbox)(syntax(Tile((id \ - ec38180d-3d56-4d65-a2c9-ee3544078a4c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 99c75e22-719a-44a1-a93c-5ef4816a7ee7)(kind Checkbox)(syntax((Tile((id \ f35df034-d0eb-42b3-b564-bc367ce724cb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c544e0f2-ec06-4ef7-9bfa-0ae848355408)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -263,13 +253,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 3425239c-4a81-492d-86dc-6ed893028762)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 0756523c-dfd0-4387-b534-d8e940f35c13)(kind Checkbox)(syntax(Tile((id \ - 8591d4e6-3932-4726-831e-36560003a174)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0756523c-dfd0-4387-b534-d8e940f35c13)(kind Checkbox)(syntax((Tile((id \ 2ed51b68-7677-4376-82eb-9734c3a4f985)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 63153545-a8ad-49c1-a08e-134c27c3d442)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -292,13 +279,10 @@ let out : string * Haz3lcore.PersistentSegment.t = b8333eb8-6c8e-4476-b1f4-9fcaa09c2b71)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 7bd80770-5d9d-43b4-a7e5-8eb5422b3495)(kind Checkbox)(syntax(Tile((id \ - 02997f43-8508-4c6f-8de7-3a9622331639)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 7bd80770-5d9d-43b4-a7e5-8eb5422b3495)(kind Checkbox)(syntax((Tile((id \ e31f45cf-d8ce-45d8-8cb0-c4bb7691a276)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3272b43b-5d1a-4899-8469-2e896280ef4a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -487,10 +471,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 3f1fa3c3-678b-4b62-b526-cc42dd192754)(label(@< >))(mold((out \ Exp)(in_(Typ))(nibs(((shape(Concave 23))(sort Exp))((shape \ Convex)(sort Exp))))))(shards(0 1))(children(((Projector((id \ - 7db98b72-d20c-4aff-b44c-2803b6e572c3)(kind Fold)(syntax(Tile((id \ - e2ef5cf3-c6e3-4ccc-816b-1e7fb87b5675)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0 1))(children(((Tile((id \ + 7db98b72-d20c-4aff-b44c-2803b6e572c3)(kind Fold)(syntax((Tile((id \ fa9e7b32-7e35-4df4-8baf-2b3ee0df4e30)(label(\"(\"\")\"))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ Typ))))))(shards(0 1))(children(((Tile((id \ @@ -530,7 +511,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 39))(sort Typ))))))(shards(0))(children())))(Tile((id \ b312d786-ec33-4a84-94c5-19ee89457f80)(label(Int))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0))(children()))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Typ))))))(shards(0))(children()))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\"))))))))(Tile((id \ fa947c56-8b2c-44c9-ab84-0625da7cc6b7)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape(Concave 23))(sort Exp))((shape \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselectMany.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselectMany.ml index db4160ce65..bb5e9e91fa 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselectMany.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselectMany.ml @@ -153,13 +153,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 4aa45b07-6ac6-49ba-a046-951737d18549)(content(Whitespace\" \ \"))))(Projector((id 48b5e7ef-76d0-41d7-824b-7a36821a860c)(kind \ - Fold)(syntax(Tile((id \ - eaf98bb5-d077-4a07-9c74-b7669b694209)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - dea05b11-486f-41d6-9848-a07e111c0c72)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id dea05b11-486f-41d6-9848-a07e111c0c72)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ dc0aeefa-760d-4e2c-b2a5-f5ffe6f66b01)(content(Whitespace\"\\n\"))))(Tile((id \ 22efa637-abe9-4a48-8593-752a078fa002)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -363,7 +359,7 @@ let out : string * Haz3lcore.PersistentSegment.t = f5c64995-5ed5-40c5-ae7d-8861b341bedc)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 557e10b8-fc2e-4804-aa00-bba17a77766c)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 557e10b8-fc2e-4804-aa00-bba17a77766c)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ c3e31f04-934e-433d-ad1c-488b5e2770bc)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -403,13 +399,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 3b5b0c7a-0ab3-44f2-a71e-6bd451a74b48)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 2bba5537-a622-45e2-9be5-cf985eeb4c12)(kind Checkbox)(syntax(Tile((id \ - 7476b8a3-d2d5-4fb0-bfba-5811611050a4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 2bba5537-a622-45e2-9be5-cf985eeb4c12)(kind Checkbox)(syntax((Tile((id \ 2fde92c8-3d4d-495e-be00-cd123f7ff832)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1091e515-f69c-4951-9e72-8898d512c357)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -432,13 +425,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 380fa852-0a3d-4dd2-825a-e849d1484f25)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 6dc93d2e-1308-460b-afd4-d5249d3e20cf)(kind Checkbox)(syntax(Tile((id \ - 9a3c5a98-9ce7-452d-9f05-d94f161120b0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 6dc93d2e-1308-460b-afd4-d5249d3e20cf)(kind Checkbox)(syntax((Tile((id \ 1303c6f6-3ad4-42cb-a5fd-779d3d0e7832)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ bad7c21d-c5c9-4f86-9f86-5d0614e857c0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -460,13 +450,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 44a36323-d0fa-48dc-957a-cb38993fb939)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 47bc5c45-e51e-419a-9c12-3d9c336f6311)(kind Checkbox)(syntax(Tile((id \ - 35ba7180-f2af-4af2-a1af-cc8aa1c75e36)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 47bc5c45-e51e-419a-9c12-3d9c336f6311)(kind Checkbox)(syntax((Tile((id \ 585fefa3-d200-48cf-ba61-0ccb95f79bc3)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b0c21b7e-0583-4a49-9585-7a4df9783bbd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -489,13 +476,10 @@ let out : string * Haz3lcore.PersistentSegment.t = f9ed2b72-f06c-4bf1-92e0-ba5c80766986)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - ae1697dd-b40e-41ff-9c81-a6d36e89055c)(kind Checkbox)(syntax(Tile((id \ - 6aeb7973-c372-4d18-b3fa-0f50ec2c62ac)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + ae1697dd-b40e-41ff-9c81-a6d36e89055c)(kind Checkbox)(syntax((Tile((id \ 476c8fbb-0aef-4fa9-94c8-1b77d27324a2)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e1c6d9d8-a9f2-4068-9048-f7b3d3719288)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -518,13 +502,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 49a7312b-0b86-47a4-82cc-d575f5f4daff)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 76399219-44c4-4a6a-b3b5-3e197d2db450)(kind Checkbox)(syntax(Tile((id \ - 44c4431f-a0b0-4679-90fd-1e21b613a577)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 76399219-44c4-4a6a-b3b5-3e197d2db450)(kind Checkbox)(syntax((Tile((id \ c122e4b9-9100-401a-b4a2-40e1f8cdc49c)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 865d895e-4b87-4a1b-a067-f0566e6227b5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiestransformColumn.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiestransformColumn.ml index a0d174a6c9..bfa447e9d8 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiestransformColumn.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiestransformColumn.ml @@ -83,13 +83,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 05ebd873-06dd-48f6-b7c1-36d08ade5b92)(content(Whitespace\" \ \"))))(Projector((id a78542e4-1ea2-4ef2-a95d-89f44d13a5df)(kind \ - Fold)(syntax(Tile((id \ - 739db7fe-21bd-4b7e-b50b-0d1773ba7eb4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 48fd8da9-77a4-4e46-924f-5381bdbcbd28)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 48fd8da9-77a4-4e46-924f-5381bdbcbd28)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 681a6169-df11-4a9e-b24c-d8fac0a6358b)(content(Whitespace\"\\n\"))))(Tile((id \ e6e568ec-a060-451c-baf4-98c3c321bc58)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -165,7 +161,7 @@ let out : string * Haz3lcore.PersistentSegment.t = f0047567-30c0-4026-bd64-e1d53d4f2edf)(label(\"\\\"red\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - fee0cd37-fb86-4cff-a078-1426d9c9a2e0)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + fee0cd37-fb86-4cff-a078-1426d9c9a2e0)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 5af11cfb-5173-4b8e-b727-ed060ac58d84)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -191,13 +187,10 @@ let out : string * Haz3lcore.PersistentSegment.t = afb81da0-cff2-46f4-9170-0d5c5f949366)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - f5261743-da32-4c0f-8439-11f8fd307408)(kind Checkbox)(syntax(Tile((id \ - 2377d3cb-f0f0-490f-836d-55df6d24d232)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + f5261743-da32-4c0f-8439-11f8fd307408)(kind Checkbox)(syntax((Tile((id \ c32a3b7e-e48f-4f47-9efd-bce7e8f827c4)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d2564720-3ecf-482d-853a-c02af4c2e41b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -230,13 +223,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 89f36f42-6e28-434a-9314-de7014c0a248)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 741bce79-343d-47e1-82a9-9b9c6d5d5b4a)(kind Checkbox)(syntax(Tile((id \ - 3964c775-f7e6-43ed-ad1d-5783fd75e00e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 741bce79-343d-47e1-82a9-9b9c6d5d5b4a)(kind Checkbox)(syntax((Tile((id \ 13438bcc-a5d7-4e2f-8c93-913b4dd324a1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5146c2e9-ab35-4586-98d4-78935bb4663a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -258,13 +248,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 855804ad-adec-4280-ad82-7905639c8f2c)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 7c75fa7b-19ea-4f5b-9bc9-274f2816f8e6)(kind Checkbox)(syntax(Tile((id \ - 61c441e3-b809-4108-b158-9218f2c682e8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 7c75fa7b-19ea-4f5b-9bc9-274f2816f8e6)(kind Checkbox)(syntax((Tile((id \ aba2081e-d08d-4638-910d-2ddd0ebf234f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2b3c2481-7ff0-4132-ad7e-0ab5cdc5919f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -287,13 +274,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ff542814-2d3a-4246-b76d-827fe5b2532b)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b51a9899-f499-41fa-8574-8e22e377ac4e)(kind Checkbox)(syntax(Tile((id \ - 35d1ea13-e82b-4c70-a077-2ba282618a77)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b51a9899-f499-41fa-8574-8e22e377ac4e)(kind Checkbox)(syntax((Tile((id \ 3ec1f886-ead1-4d49-9761-10ae414981a1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 82a21747-289b-49b2-b190-c4d763276ab1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -316,13 +300,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 1e0688a7-4fd4-43a9-8374-75da39428725)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 0b88fe7b-70a3-4835-ba70-a761e017844a)(kind Checkbox)(syntax(Tile((id \ - 3b359e0b-15c8-45d9-9f82-57569d80b012)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0b88fe7b-70a3-4835-ba70-a761e017844a)(kind Checkbox)(syntax((Tile((id \ c66e97ce-3d26-403d-b6c2-b4d54ef7a225)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d5c52272-0980-4a18-b0ea-d28768d02763)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -345,13 +326,10 @@ let out : string * Haz3lcore.PersistentSegment.t = ab7bc5ff-4247-4e5c-a756-734c77c1b460)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e7f0317f-db17-4243-929c-a73ecc4f8e17)(kind Checkbox)(syntax(Tile((id \ - bff19e19-55d1-4bba-9c05-751db080dfc1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e7f0317f-db17-4243-929c-a73ecc4f8e17)(kind Checkbox)(syntax((Tile((id \ 64e28259-5da3-4db3-8b11-bcbafff49e4c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b4c4a4b8-b66e-4b86-8b53-34d8d0ca4083)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesupdate.ml b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesupdate.ml index 1ad3bb33b7..ab020791ee 100644 --- a/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesupdate.ml +++ b/src/b2t2/slides/table_api/B2T2TableAPIUtilitiesupdate.ml @@ -153,13 +153,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 5c83a6e3-c003-43f7-9d2d-27e705166123)(content(Whitespace\" \ \"))))(Projector((id c2626850-3baa-40aa-ae36-32f1500ff3b2)(kind \ - Fold)(syntax(Tile((id \ - 66a27340-0dad-4663-8751-9f4973f70a1e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 2331d060-bca7-46a4-8678-2b635fd1b411)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Secondary((id \ + Fold)(syntax((Tile((id 2331d060-bca7-46a4-8678-2b635fd1b411)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 5285f157-c884-4966-b088-07c4580aa9cd)(content(Whitespace\"\\n\"))))(Tile((id \ f0680067-4b31-4c65-b1cd-09a9ce51bd1f)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ @@ -363,7 +359,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 74cc0403-515f-49c2-88cd-803250f02ac4)(label(77))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - c1c2259b-93cb-49cd-ae73-4ff2ad5f37fb)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + c1c2259b-93cb-49cd-ae73-4ff2ad5f37fb)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ e646e267-3c0c-4201-81a1-4d1a451381fe)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -392,13 +388,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 4ef6b815-f560-454c-8aac-422c32a91c06)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 22f83a10-e8d7-4a51-b915-5243efbd36f4)(kind Checkbox)(syntax(Tile((id \ - f2e5555d-b836-4e3e-9937-dab4554a99d0)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 22f83a10-e8d7-4a51-b915-5243efbd36f4)(kind Checkbox)(syntax((Tile((id \ 7f31229e-b52d-46cf-8227-51ce8f8b6beb)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2b11a9f7-6c0c-427d-8666-75a5dac8ff2f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -435,13 +428,10 @@ let out : string * Haz3lcore.PersistentSegment.t = a4ca3db2-dacb-4577-8c0a-e7443dc4379a)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - b20360e9-c656-4127-82e2-97859b07cee5)(kind Checkbox)(syntax(Tile((id \ - b89f0389-a4be-4d0b-9c48-265a505471d3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b20360e9-c656-4127-82e2-97859b07cee5)(kind Checkbox)(syntax((Tile((id \ 10bbe473-b870-4e2e-b722-f1778539ea99)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c0147fa7-ba9b-48d2-9070-dac2cf215cde)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -464,13 +454,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 23bebc19-0ad5-4133-8b21-0bf07ba254ec)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - fea12e5e-8929-4f91-902e-6030be68da25)(kind Checkbox)(syntax(Tile((id \ - ca27d30d-dd11-4357-8cbf-d1576d29ee97)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + fea12e5e-8929-4f91-902e-6030be68da25)(kind Checkbox)(syntax((Tile((id \ e5e76cba-63ed-46ae-8e6a-285871e26e29)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9944a97f-1873-4c65-b28d-4bbcd9814f29)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -493,13 +480,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 380cef56-4d96-4eed-882b-07b257c13ce3)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - bbe10c8b-a863-411d-b316-fdbaf9b7361f)(kind Checkbox)(syntax(Tile((id \ - c08dba53-8eb7-4a2c-91af-5d642cef4c63)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + bbe10c8b-a863-411d-b316-fdbaf9b7361f)(kind Checkbox)(syntax((Tile((id \ 6c6bddff-4716-4688-81a4-4ddcf5239601)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d288541f-c18a-409a-8051-3227ee406b6c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -522,13 +506,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 920da1ed-8793-448e-8bc3-81981d285b93)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - e7991312-b894-4036-ad68-deb7f97d97c5)(kind Checkbox)(syntax(Tile((id \ - 10142cab-dbfb-4283-8190-6bf40399e7b4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e7991312-b894-4036-ad68-deb7f97d97c5)(kind Checkbox)(syntax((Tile((id \ 700bc419-08bc-49cf-a7e9-1b05a3b6ed32)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 56b9d243-2ab1-45d9-85a8-fe8614b633f0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -551,13 +532,10 @@ let out : string * Haz3lcore.PersistentSegment.t = 28545ebd-5faf-4b40-9bd4-c6dc0fab84be)(label(=))(mold((out \ Exp)(in_())(nibs(((shape(Concave 39))(sort Exp))((shape(Concave \ 39))(sort Exp))))))(shards(0))(children())))(Projector((id \ - ef2316cd-c609-40c3-82b5-5bbc81053da7)(kind Checkbox)(syntax(Tile((id \ - d9cc1c07-bea8-4471-9415-71c5e5d0fef8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + ef2316cd-c609-40c3-82b5-5bbc81053da7)(kind Checkbox)(syntax((Tile((id \ 20e48b36-31ce-461e-b8a3-c2a6cdf5c990)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a07cc875-2fdb-4cf1-be12-6f13a35c2eeb)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ diff --git a/src/haz3lcore/CachedSyntax.re b/src/haz3lcore/CachedSyntax.re index 0cbf5e6fe3..2d4514c659 100644 --- a/src/haz3lcore/CachedSyntax.re +++ b/src/haz3lcore/CachedSyntax.re @@ -41,12 +41,16 @@ let mk = (~info_map, ~dyn_map, z): t => { let segment = Zipper.unselect_and_zip(z); let MakeTerm.{term: _, terms, projectors, projector_list, term_data} = MakeTerm.go(segment); + let splice_size_map = Measured.splice_sizes(segment); + let splice_size = (id: Id.t) => + Measured.splice_size_of(splice_size_map, id); let projector_shapes = ProjectorInfo.ShapeMapSemantics.mk( projectors, z.refractors, info_map, dyn_map, + splice_size, ); let refractor_shape_map = Id.Map.empty; // z.refractors.map |> Id.Map.map(_p => 2); let measured = diff --git a/src/haz3lcore/CompositionCore/GeneralTreeUtils.re b/src/haz3lcore/CompositionCore/GeneralTreeUtils.re index b84e1abe9d..41a02c82e7 100644 --- a/src/haz3lcore/CompositionCore/GeneralTreeUtils.re +++ b/src/haz3lcore/CompositionCore/GeneralTreeUtils.re @@ -220,6 +220,7 @@ let get_var_names_from_pat = (curr: Info.t): list(string) => { | TupLabel(pat1, pat2) | Cons(pat1, pat2) => go(pat1, vars) @ go(pat2, vars) | Parens(pat) + | Splice(pat) | Asc(pat, _) => go(pat, vars) | ListLit(pats) | Tuple(pats) => diff --git a/src/haz3lcore/CompositionCore/HighLevelNodeMap.re b/src/haz3lcore/CompositionCore/HighLevelNodeMap.re index 84e740aa61..090600ae7a 100644 --- a/src/haz3lcore/CompositionCore/HighLevelNodeMap.re +++ b/src/haz3lcore/CompositionCore/HighLevelNodeMap.re @@ -77,6 +77,7 @@ module Utils = { | UnOp(_, e) | Test(e) | Parens(e) + | Splice(e) | Filter(_, e) | Closure(_, e) | Asc(e, _) @@ -231,6 +232,7 @@ module Namer = { | Constructor(name, _) | Label(name) => name | Parens(pat) + | Splice(pat) | Asc(pat, _) => mk_name_from_pat(pat) | Cons(pat1, pat2) => mk_name_from_pat(pat1) ++ "::" ++ mk_name_from_pat(pat2) diff --git a/src/haz3lcore/TyDi/ErrorPrint.re b/src/haz3lcore/TyDi/ErrorPrint.re index bd993626a9..d94ab7e660 100644 --- a/src/haz3lcore/TyDi/ErrorPrint.re +++ b/src/haz3lcore/TyDi/ErrorPrint.re @@ -13,7 +13,7 @@ let remove_projectors = (segment: Segment.t) => //TODO: Remove this when splices is merged ZipperBase.MapPiece.of_segment( fun - | Projector(pr) => [pr.syntax] + | Projector(pr) => pr.syntax | x => [x], segment, ); diff --git a/src/haz3lcore/derived/Indentation.re b/src/haz3lcore/derived/Indentation.re index c6d354068f..855bdc4686 100644 --- a/src/haz3lcore/derived/Indentation.re +++ b/src/haz3lcore/derived/Indentation.re @@ -164,7 +164,8 @@ let rec go' = ((not_top, base: int, seg: Segment.t)) => { (level, Id.Map.add(w.id, level, map)); | Secondary(_) | Grout(_) - | Projector(_) => (level, map) + | Projector(_) + | Splice(_) => (level, map) | Tile(t) => let map = union_all([ diff --git a/src/haz3lcore/derived/Measured.re b/src/haz3lcore/derived/Measured.re index 468348884e..ccb52b523a 100644 --- a/src/haz3lcore/derived/Measured.re +++ b/src/haz3lcore/derived/Measured.re @@ -50,11 +50,21 @@ module Shards = { }; }; +/* Intrinsic geometric info about a splice. The splice's content is + * measured in its own coordinate frame (origin = (0,0)); the [size] is + * the bounding box of that content. Pieces inside the splice are stored + * in the top-level [t] maps with their splice-local coordinates (piece + * ids are globally unique so this does not collide with outer pieces). */ +[@deriving (show({with_path: false}), sexp, yojson)] +type splice_info = {size: Point.t}; + type t = { tiles: Id.Map.t(Shards.t), grout: Id.Map.t(measurement), secondary: Id.Map.t(measurement), projectors: Id.Map.t(measurement), + /* Intrinsic size and parent info for each splice, keyed by splice id. */ + splices: Id.Map.t(splice_info), rows: Rows.t, piece_rows: list(list(Piece.t)) /* NOTE: sublists are reversed */ }; @@ -64,6 +74,7 @@ let empty = { grout: Id.Map.empty, secondary: Id.Map.empty, projectors: Id.Map.empty, + splices: Id.Map.empty, rows: Rows.empty, piece_rows: [], }; @@ -97,6 +108,29 @@ let add_pr = (p: Base.projector, m, map) => { projectors: map.projectors |> Id.Map.add(p.id, m), }; +let add_splice_info = (s: Base.splice, info: splice_info, map) => { + ...map, + splices: map.splices |> Id.Map.add(s.id, info), +}; + +/* Merge the splice-local inner map (measurements of pieces inside a splice) + * into the top-level map. Splice-local pieces are stored with their local + * coordinates; because piece ids are globally unique, these do not + * collide with outer entries. [rows] and [piece_rows] from the inner + * map are discarded (they belong to the splice's coordinate frame). */ +let merge_inner = (inner: t, outer: t): t => { + let join = (a, b) => Id.Map.union((_, _, v2) => Some(v2), a, b); + { + tiles: join(outer.tiles, inner.tiles), + grout: join(outer.grout, inner.grout), + secondary: join(outer.secondary, inner.secondary), + projectors: join(outer.projectors, inner.projectors), + splices: join(outer.splices, inner.splices), + rows: outer.rows, + piece_rows: outer.piece_rows, + }; +}; + let add_row = (row: int, shape: Rows.shape, map) => { ...map, rows: Rows.add(row, shape, map.rows), @@ -164,6 +198,28 @@ let find_t = (t: Tile.t, map): measurement => { last: last.last, }; }; +let find_splice_info = (~msg="", s: Base.splice, map): splice_info => + try(Id.Map.find(s.id, map.splices)) { + | _ => failwith("find_splice_info: " ++ msg) + }; +let find_splice_info_opt = (s: Base.splice, map): option(splice_info) => + Id.Map.find_opt(s.id, map.splices); + +/* A splice consumes zero width in its parent's coordinate frame; its + * intrinsic size is recorded separately in [map.splices] and the splice's + * actual on-screen placement is decided by its parent projector's view. */ +let find_splice_placeholder = (s: Base.splice, map): measurement => { + let origin = + switch (Id.Map.find_opt(s.id, map.grout)) { + | Some(m) => m.origin + | None => Point.zero + }; + { + origin, + last: origin, + }; +}; + let find_p = (~msg="", p: Piece.t, map): measurement => try( p @@ -172,6 +228,7 @@ let find_p = (~msg="", p: Piece.t, map): measurement => g => find_g(g, map), t => find_t(t, map), p => find_pr(p, map), + s => find_splice_placeholder(s, map), ) ) { | _ => failwith("find_p: " ++ msg ++ "id: " ++ Id.to_string(p |> Piece.id)) @@ -305,26 +362,6 @@ let of_segment_inner = ); }; - let add_projector = ((seg, indent, origin, map): acc, pr: Base.projector) => { - let size = DeferredLinebreaks.of_projector(pr, shape_map); - let shape = ProjectorCore.Shape.Map.lookup(pr.id, shape_map); - let indent = - switch (shape.vertical) { - | Inline - | Block(0) - | Tab(_) => indent - | Block(_) => origin.col - }; - let (measure, map) = calc(indent, origin, map, size); - let map = - size.row == 0 - ? map - : add_piece_row(origin.row, [Piece.Projector(pr), ...seg], map); - let map = size.row == 0 ? map : add_n_empty_piece_rows(size.row - 1, map); - let seg = size.row == 0 ? [Piece.Projector(pr), ...seg] : []; - (seg, indent, measure.last, add_pr(pr, measure, map)); - }; - let add_secondary = ((seg, prev_indent, origin, map): acc, w: Secondary.t) => { let (seg, new_indent, size, map) = switch (indent_of_linebreak(w)) { @@ -379,6 +416,11 @@ let of_segment_inner = | Secondary(w) => add_secondary(acc, w) | Grout(g) => add_grout(acc, g) | Projector(p) => add_projector(acc, p) + | Splice(s) => + /* If a splice wrapper leaks into a normal editor segment, render it as + * transparent syntax. Projector-owned splices are measured separately by + * [measure_splices_in] from the projector's stored syntax. */ + go(~top_level=false, acc, s.content) | Tile(t) => switch (Id.Map.find_opt(t.id, refractor_shape_map)) { | Some(_) => @@ -391,7 +433,64 @@ let of_segment_inner = (acc, seg) => add_shard(go(~top_level=false, acc, seg), t), Aba.mk(t.shards, t.children), ); - }; + } + and add_projector = ((seg, indent, origin, map): acc, pr: Base.projector) => { + let size = DeferredLinebreaks.of_projector(pr, shape_map); + let shape = ProjectorCore.Shape.Map.lookup(pr.id, shape_map); + let indent = + switch (shape.vertical) { + | Inline + | Block(0) + | Tab(_) => indent + | Block(_) => origin.col + }; + let (measure, map) = calc(indent, origin, map, size); + let map = + size.row == 0 + ? map + : add_piece_row(origin.row, [Piece.Projector(pr), ...seg], map); + let map = size.row == 0 ? map : add_n_empty_piece_rows(size.row - 1, map); + let seg = size.row == 0 ? [Piece.Projector(pr), ...seg] : []; + /* Walk the projector's syntax looking for Splice children: measure + * each splice's content in its own coordinate frame (origin = 0,0), + * merge the resulting piece measurements back into the outer map, + * and record the splice's intrinsic size. Non-splice pieces inside + * the projector are not rendered inline, so they are left unmeasured. */ + let map = measure_splices_in(pr.syntax, map); + (seg, indent, measure.last, add_pr(pr, measure, map)); + } + /* Measure a splice's content in its own coordinate frame (origin 0,0). + * Returns the outer map augmented with the splice's inner piece + * measurements and the splice's intrinsic size. */ + and measure_splice = (s: Base.splice, outer: t): t => { + let (_, _, last, inner) = + go(~top_level=false, ([], 0, Point.zero, empty), s.content); + let outer = merge_inner(inner, outer); + add_splice_info(s, {size: last}, outer); + } + /* Scan a projector's syntax for Splice children and measure each. */ + and measure_splices_in = (syntax: Segment.t, map: t): t => + List.fold_left( + (map, p: Piece.t) => + switch (p) { + | Splice(s) => measure_splice(s, map) + | Projector(pr) => measure_splices_in(pr.syntax, map) + /* Tiles in a projector's syntax are not rendered inline, but they + * may contain splices in their children (e.g. VList wraps its + * items as splices inside a list-literal tile). Recurse into + * every child segment so those nested splices get measured. */ + | Tile(t) => + List.fold_left( + (map, child) => measure_splices_in(child, map), + map, + t.children, + ) + | Grout(_) + | Secondary(_) => map + }, + map, + syntax, + ); let (_, _, _, map) = go(~top_level=true, ([], 0, Point.zero, empty), seg); map; }; @@ -424,3 +523,68 @@ let start_row_width = (measurement: measurement, measured: t): int => | None => 0 | Some(row) => row.max_col }; + +/* Compute the bounding box of a segment measured from the origin (0,0). + * Returns a Point.t where row is the number of linebreaks and col is + * the max column reached on the last row. Useful for computing splice + * sizes independently of the parent segment's layout. */ +let segment_bbox = (seg: Segment.t): Point.t => { + let m = + of_segment_inner( + Id.Map.empty, + false, + seg, + ProjectorCore.Shape.Map.empty, + Id.Map.empty, + ); + let rows = m.rows |> Rows.bindings; + switch (rows) { + | [] => Point.zero + | _ => + let max_row = List.fold_left((r, (k, _)) => max(r, k), 0, rows); + let col = + List.fold_left( + (c, (_, shape: Rows.shape)) => max(c, shape.max_col), + 0, + rows, + ); + { + row: max_row, + col, + }; + }; +}; + +/* Pre-pass that walks [seg] (potentially recursing into projectors and + * splices) and returns a map from splice id to intrinsic size. This is + * intended to be used before the full Measured map is computed, e.g. + * when projectors need splice sizes at placeholder-time to size the + * shape they leave for themselves in the base editor. */ +let rec splice_sizes = (seg: Segment.t): Id.Map.t(Point.t) => + List.fold_left( + (acc, p: Piece.t) => + switch (p) { + | Base.Splice(s) => + let size = segment_bbox(s.content); + let acc = Id.Map.add(s.id, size, acc); + Id.Map.union((_, _, v2) => Some(v2), acc, splice_sizes(s.content)); + | Base.Projector(pr) => + Id.Map.union((_, _, v2) => Some(v2), acc, splice_sizes(pr.syntax)) + | Base.Tile(t) => + List.fold_left( + (acc, child) => + Id.Map.union((_, _, v2) => Some(v2), acc, splice_sizes(child)), + acc, + t.children, + ) + | _ => acc + }, + Id.Map.empty, + seg, + ); + +let splice_size_of = (sizes: Id.Map.t(Point.t), id: Id.t): Point.t => + switch (Id.Map.find_opt(id, sizes)) { + | Some(p) => p + | None => Point.zero + }; diff --git a/src/haz3lcore/lang/MakeTerm.re b/src/haz3lcore/lang/MakeTerm.re index 3cd148d0b2..637e622965 100644 --- a/src/haz3lcore/lang/MakeTerm.re +++ b/src/haz3lcore/lang/MakeTerm.re @@ -23,6 +23,7 @@ let tokens = /* Hack: These act as temporary wrappers for projectors, * given that they in-effect act as a convex wrapping form */ ["PROJ_WRAP", "PROJ_WRAP"], + _ => ["SPLICE_WRAP", "SPLICE_WRAP"], ); [@deriving (show({with_path: false}), sexp, yojson)] @@ -371,6 +372,12 @@ and exp_term: unsorted => (Exp.term, list(Id.t)) = { | (["{", "}"], [Exp(body)]) | (["(", ")"], [Exp(body)]) => ret(Parens(body)) | (["PROJ_WRAP", "PROJ_WRAP"], [Exp(body)]) => ret(body.term) + | (["SPLICE_WRAP", "SPLICE_WRAP"], [Exp(body)]) => + /* Splices are represented in the term so projectors can edit + * terms while preserving splice boundaries. The wrapper's + * annotation id is the splice id; body ids are kept so cursor-info + * lookups for pieces inside the splice still succeed. */ + (Splice(body), body.annotation.ids) | (["[", "]"], [Exp(body)]) => /* ListLit absorption: inner Tuple's comma IDs become part of ListLit. ID order: [bracket_id] @ comma_ids (outer first, then adopted). @@ -684,6 +691,10 @@ and pat_term: unsorted => (Pat.term, list(Id.t)) = { | ([t], []) when Token.is_ctr(t) => ret(Constructor(t, None)) | (["(", ")"], [Pat(body)]) => ret(Parens(body)) | (["PROJ_WRAP", "PROJ_WRAP"], [Pat(body)]) => ret(body.term) + | (["SPLICE_WRAP", "SPLICE_WRAP"], [Pat(body)]) => ( + Splice(body), + body.annotation.ids, + ) | (["[", "]"], [Pat(body)]) => /* ListLit pattern absorption: inner Tuple's comma IDs become part of ListLit. ID order: [bracket_id] @ comma_ids (outer first, then adopted). @@ -800,29 +811,35 @@ and typ_term: unsorted => (Typ.term, list(Id.t)) = { | _ => ret(Sig(flatten_sig(body))) } | ([(_id, tile)], []) => - ret( - switch (tile) { - | ([t], []) when Token.is_empty_tuple(t) => Prod([]) - | ([t], []) when Token.is_empty_module(t) => Sig([]) - | (["Bool"], []) => Atom(Bool) - | (["Int"], []) => Atom(Int) - | (["SInt"], []) => Atom(SInt) - | (["Float"], []) => Atom(Float) - | (["String"], []) => Atom(String) - | (["Nat"], []) => Atom(Nat) - | (["_"], []) => ExplicitNonlabel - | (["proof_of", "end"], [Exp(exp)]) => ProofOf(exp) - | ([t], []) when Token.is_typ_var(t) => Var(t) - | ([t], []) when Token.is_quoted_label(t) => - Label(Token.sub(t, 1, Token.length(t) - 2)) - | (["(", ")"], [Typ(body)]) => Parens(body) - | (["PROJ_WRAP", "PROJ_WRAP"], [Typ(body)]) => body.term - | (["[", "]"], [Typ(body)]) => List(body) - | ([t], []) when is_hole_label(t) => hole(tm) - | ([t], []) => Unknown(Hole(Invalid(t))) - | _ => hole(tm) - }, - ) + switch (tile) { + | (["SPLICE_WRAP", "SPLICE_WRAP"], [Typ(body)]) => + /* See SPLICE_WRAP comment in exp_term. */ + (Splice(body), body.annotation.ids) + | _ => + ret( + switch (tile) { + | ([t], []) when Token.is_empty_tuple(t) => Prod([]) + | ([t], []) when Token.is_empty_module(t) => Sig([]) + | (["Bool"], []) => Atom(Bool) + | (["Int"], []) => Atom(Int) + | (["SInt"], []) => Atom(SInt) + | (["Float"], []) => Atom(Float) + | (["String"], []) => Atom(String) + | (["Nat"], []) => Atom(Nat) + | (["_"], []) => ExplicitNonlabel + | (["proof_of", "end"], [Exp(exp)]) => ProofOf(exp) + | ([t], []) when Token.is_typ_var(t) => Var(t) + | ([t], []) when Token.is_quoted_label(t) => + Label(Token.sub(t, 1, Token.length(t) - 2)) + | (["(", ")"], [Typ(body)]) => Parens(body) + | (["PROJ_WRAP", "PROJ_WRAP"], [Typ(body)]) => body.term + | (["[", "]"], [Typ(body)]) => List(body) + | ([t], []) when is_hole_label(t) => hole(tm) + | ([t], []) => Unknown(Hole(Invalid(t))) + | _ => hole(tm) + }, + ) + } | _ => ret(hole(tm)) } | Post(Typ(_t), tiles) as tm => @@ -923,7 +940,8 @@ and tpat_term: unsorted => TPat.term = { | ([t], []) when Token.is_typ_var(t) => Var(t) | ([t], []) when is_hole_label(t) => hole(tm) | ([t], []) => Invalid(t) - | (["PROJ_WRAP", "PROJ_WRAP"], [TPat(body)]) => body.term + | (["PROJ_WRAP", "PROJ_WRAP"], [TPat(body)]) + | (["SPLICE_WRAP", "SPLICE_WRAP"], [TPat(body)]) => body.term | _ => hole(tm) }, ) @@ -1081,11 +1099,18 @@ and unsorted = (sort: Sort.t, skel: Skel.t, seg: Segment.t): unsorted => { switch (p) { | Secondary(_) | Grout(_) => [] + | Splice({content, _}) => + /* Splices are transparent wrappers: their content becomes the + * single kid of the SPLICE_WRAP tile. The SPLICE_WRAP case at + * term-construction time unwraps `body.term` straight through. */ + let sk = Segment.skel(content); + let sort = Segment.sort_of(sk, content); + [go_s(sort, sk, content)]; | Projector({id, kind, model, syntax} as pr) => let _ = log_projector(pr); - let sort = Piece.sort(syntax) |> fst; - let seg = Piece.unparenthesize(syntax); - let inner = go_s(sort, Segment.skel(seg), seg); + let sk = Segment.skel(syntax); + let sort = Segment.sort_of(sk, syntax); + let inner = go_s(sort, sk, syntax); /* Construct Projector term with proper annotation, preserving * projector metadata (kind, model) in the term for round-tripping */ let projector_data: Grammar.projector_data = { @@ -1211,7 +1236,8 @@ let go = projector_list := []; adopted_ids := []; secondary_map := Segment.SecondaryCollection.collect(seg); - let term = exp(unsorted(Exp, Segment.skel(seg), seg)); + let skel = Segment.skel(seg); + let term = exp(unsorted(Exp, skel, seg)); consolidate_adopted(); { term, diff --git a/src/haz3lcore/pretty/ExpToSegment.re b/src/haz3lcore/pretty/ExpToSegment.re index f7e082bc31..b53f814ddb 100644 --- a/src/haz3lcore/pretty/ExpToSegment.re +++ b/src/haz3lcore/pretty/ExpToSegment.re @@ -124,6 +124,7 @@ let rec external_precedence = (exp: Exp.t): Precedence.t => { // Same goes for forms which are already surrounded | Parens(_) | Projector(_) + | Splice(_) | ListLit(_) | Test(_) | HintedTest(_) @@ -182,7 +183,8 @@ let external_precedence_pat = (dp: Pat.t) => // Same goes for forms which are already surrounded | ListLit(_) | Parens(_) - | Projector(_) => Precedence.max + | Projector(_) + | Splice(_) => Precedence.max // Other forms | Cons(_) => Precedence.cons @@ -211,6 +213,7 @@ let external_precedence_typ = (tp: Typ.t) => // Same goes for forms which are already surrounded | Parens(_) | Projector(_) + | Splice(_) | ProofOf(_) | List(_) => Precedence.max @@ -524,6 +527,8 @@ let rec parenthesize = |> rewrap | Projector(data, e) => Projector(data, parenthesize(e) |> paren_at(Precedence.min)) |> rewrap + | Splice(e) => + Splice(parenthesize(e) |> paren_at(Precedence.min)) |> rewrap | Cons(e1, e2) => Cons( parenthesize(e1) |> paren_at(Precedence.cons), @@ -625,6 +630,8 @@ and parenthesize_pat = | Projector(data, p) => Projector(data, parenthesize_pat(p) |> paren_pat_at(Precedence.min)) |> rewrap + | Splice(p) => + Splice(parenthesize_pat(p) |> paren_pat_at(Precedence.min)) |> rewrap | Cons(p1, p2) => Cons( parenthesize_pat(p1) |> paren_pat_at(Precedence.cons), @@ -711,6 +718,8 @@ and parenthesize_typ = | Projector(data, t) => Projector(data, parenthesize_typ(t) |> paren_typ_at(Precedence.min)) |> rewrap + | Splice(t) => + Splice(parenthesize_typ(t) |> paren_typ_at(Precedence.min)) |> rewrap | List(t) => List(parenthesize_typ(t) |> paren_typ_at(Precedence.min)) |> rewrap | Prod([]) => typ @@ -1117,7 +1126,7 @@ let fold_if = (condition, pieces) => mk_form(~secondary=AutoFormat, ParensExp, Id.mk(), [pieces]); switch (MakeTerm.for_projection([syntax])) { | None => failwith("ExpToSegment.fold_if") - | Some(any) => [ProjectorInit.init_or_noop(Fold, syntax, any)] + | Some(any) => ProjectorInit.init_or_noop(Fold, [syntax], any) }; } else { pieces; @@ -1135,7 +1144,7 @@ let fold_fun_if = (condition, f_name: string, pieces, exp) => always_render: true, }) |> Sexplib.Sexp.to_string; - [ProjectorInit.init_or_noop_from_str(Fold, syntax, Exp(exp), str)]; + ProjectorInit.init_or_noop_from_str(Fold, [syntax], Exp(exp), str); | `Text => let name = if (String.length(f_name) >= 2) { @@ -1621,11 +1630,14 @@ let rec exp_to_pretty = (~settings: Settings.t, exp: Exp.t): pretty => { | Projector({kind, model}, e) => let id = exp |> Exp.rep_id; let+ inner_seg = go(e); - let syntax = Segment.parenthesize(inner_seg); wrap( exp, - [Piece.Projector(ProjectorCore.mk(~id, kind, syntax, model))], + [Piece.Projector(ProjectorCore.mk(~id, kind, inner_seg, model))], ); + | Splice(e) => + let id = exp |> Exp.rep_id; + let+ inner_seg = go(e); + wrap(exp, [Piece.mk_splice(~id, inner_seg)]); | Cons(e1, e2) => // TODO: Add optional newlines let id = exp |> Exp.rep_id; @@ -1946,11 +1958,14 @@ and pat_to_pretty = (~settings: Settings.t, pat: Pat.t): pretty => { | Projector({kind, model}, p) => let id = pat |> Pat.rep_id; let+ inner_seg = go(p); - let syntax = Segment.parenthesize(inner_seg); wrap( pat, - [Piece.Projector(ProjectorCore.mk(~id, kind, syntax, model))], + [Piece.Projector(ProjectorCore.mk(~id, kind, inner_seg, model))], ); + | Splice(p) => + let id = pat |> Pat.rep_id; + let+ inner_seg = go(p); + wrap(pat, [Piece.mk_splice(~id, inner_seg)]); | MultiHole(es) => let+ es = es |> List.map(any_to_pretty(~settings: Settings.t)) |> all; /* Use IDs from the term for grout pieces, like Tuple uses for commas. */ @@ -2187,11 +2202,14 @@ and typ_to_pretty = (~settings: Settings.t, typ: Typ.t): pretty => { | Projector({kind, model}, t) => let id = typ |> Typ.rep_id; let+ inner_seg = go(t); - let syntax = Segment.parenthesize(inner_seg); wrap( typ, - [Piece.Projector(ProjectorCore.mk(~id, kind, syntax, model))], + [Piece.Projector(ProjectorCore.mk(~id, kind, inner_seg, model))], ); + | Splice(t) => + let id = typ |> Typ.rep_id; + let+ inner_seg = go(t); + wrap(typ, [Piece.mk_splice(~id, inner_seg)]); | Rec(tp, t) => let id = typ |> Typ.rep_id; let+ tp = tpat_to_pretty(~settings: Settings.t, tp) @@ -2504,3 +2522,54 @@ let any_to_segment = let p = any_to_pretty(~settings, any); p |> PrettySegment.select; }; + +let rec collect_splices = (acc: Id.Map.t(Piece.t), seg: Segment.t) => + List.fold_left( + (acc, p: Piece.t) => + switch (p) { + | Splice(s) => + collect_splices(Id.Map.add(s.id, p, acc), s.content) + | Tile(t) => List.fold_left(collect_splices, acc, t.children) + | Projector(pr) => collect_splices(acc, pr.syntax) + | Grout(_) + | Secondary(_) => acc + }, + acc, + seg, + ); + +let rec reuse_splices = (splices: Id.Map.t(Piece.t), seg: Segment.t): Segment.t => + List.map( + (p: Piece.t) => + switch (p) { + | Splice(s) => + switch (Id.Map.find_opt(s.id, splices)) { + | Some(original) => original + | None => Splice({...s, content: reuse_splices(splices, s.content)}) + } + | Tile(t) => + Tile({...t, children: List.map(reuse_splices(splices), t.children)}) + | Projector(pr) => + Projector({...pr, syntax: reuse_splices(splices, pr.syntax)}) + | Grout(_) + | Secondary(_) => p + }, + seg, + ); + +let any_to_projector_segment = + ( + ~already_paren=false, + ~settings: Settings.t, + ~original_syntax: Segment.t, + ~preserve_splices: bool, + any: Any.t, + ) + : Segment.t => { + let seg = any_to_segment(~already_paren, ~settings, any); + if (preserve_splices) { + reuse_splices(collect_splices(Id.Map.empty, original_syntax), seg); + } else { + seg; + }; +}; diff --git a/src/haz3lcore/projectors/ProjectorBase.re b/src/haz3lcore/projectors/ProjectorBase.re index 821735496d..1f704f86c8 100644 --- a/src/haz3lcore/projectors/ProjectorBase.re +++ b/src/haz3lcore/projectors/ProjectorBase.re @@ -12,9 +12,11 @@ open Language; * of currently available projectors */ /* The type of syntax which a projector can replace. - * Right now projectors can replace a single piece */ + * A projector's syntax is a segment (list of pieces) which may + * contain Splice pieces whose contents are separately-editable + * sub-regions. */ [@deriving (show({with_path: false}), sexp, yojson)] -type syntax = Base.piece; +type syntax = Base.segment; /* Global actions available to handlers in all projectors */ type external_action = @@ -22,7 +24,7 @@ type external_action = | Probe(Action.probe) /* Probe actions like StepInto */ | Remove /* Remove projector entirely */ | Escape(Util.Direction.t) /* Pass focus to parent editor */ - | SetSyntax(Base.segment); /* Set underlying syntax */ + | SetSyntax(Any.t, bool); /* Set underlying syntax, optionally preserving original splices */ /* Syntax utility functions/values for projector use, * provided here to resolve cyclic dependency issues */ @@ -33,11 +35,8 @@ type utility = { /* Convert a term to a segment */ term_to_seg: Any.t => Base.segment, seg_to_string: Base.segment => string, - /* Lifts term->term functions to syntax->syntax. This will - * proactively attempt to parenthesize resulting non-single - * piece terms. As such, sorts that do not have parentheses - * (currently all degenerate cases) will throw an error */ - lift_syntax: (Any.t => Any.t, Base.segment) => option(Base.segment), + /* Lifts term->term functions over the projector's syntax term. */ + lift_term: (Any.t => Any.t, Base.segment) => option(Any.t), }; module Focusable = { @@ -123,10 +122,21 @@ module View = { ~background: bool=?, ~text_only: bool=?, Sort.t, - list(syntax) + Base.segment ) => Node.t; + /* Thunk returning the view for a splice by its id. Thunked so that + * expensive splice rendering only happens for splices the projector + * actually places in its view. */ + [@deriving (show({with_path: false}), sexp, yojson)] + type splice_view = Id.t => Node.t; + + /* Intrinsic bounding box size of a splice's content, in the splice's + * own coordinate frame. */ + [@deriving (show({with_path: false}), sexp, yojson)] + type splice_size = Id.t => Util.Point.t; + [@deriving (show({with_path: false}), sexp, yojson)] type args('model, 'action) = { model: 'model, @@ -138,6 +148,13 @@ module View = { /* Creates a non-interactive embedded syntax view, * provided here to address a dependency cycle */ view_seg: seg, + /* Thunked splice views; call to render an inner editor for a splice + * contained in this projector's syntax */ + splice_view, + /* Intrinsic size of a splice's content */ + splice_size, + /* All splice children of this projector in document order */ + splices: list(Base.splice), /* Parent editor context on the projector */ status, }; @@ -175,8 +192,16 @@ module type Projector = { type action; /* Init should return None if the projector doesn't want * to handle the provided term. Otherwise, it should - * return the desired initial state of the model. */ - let init: Any.t => option(model); + * return the desired initial state of the model, along with + * an optional replacement syntax. [init] receives the original + * [Base.segment] the user selected (in addition to the parsed + * term); when [Some(seg)] is returned as the second component, + * the projector's stored syntax is set to [seg] instead of the + * selected segment. This lets projectors transform their + * underlying syntax at init time (e.g. to wrap list items in + * splices). Return [None] for the second component to keep the + * selected syntax unchanged. */ + let init: (Any.t, Base.segment) => option((model, option(Base.segment))); /* Does this projector have some notion of internal * positions, whose handling should override the editor * caret & keyboard handlers? If so, provide handlers @@ -188,8 +213,11 @@ module type Projector = { let dynamics: bool; /* Renders the DOM views for the projector */ let view: View.args(model, action) => View.t; - /* The space left for the projector in the base editor */ - let placeholder: (model, info) => ProjectorCore.Shape.t; + /* The space left for the projector in the base editor. The projector + * receives [splice_size] so that it may size itself around its splice + * children; splice sizes are intrinsic (independent of the layout of + * the parent projector) and may be looked up by splice id. */ + let placeholder: (model, info, View.splice_size) => ProjectorCore.Shape.t; /* Update the local projector model given an action */ let update: (model, info, action) => model; }; @@ -210,7 +238,8 @@ module Cook = (C: Projector) : Cooked => { let deserialize_m = s => s |> Sexplib.Sexp.of_string |> C.model_of_sexp; let serialize_a = a => a |> C.sexp_of_action |> Sexplib.Sexp.to_string; let deserialize_a = s => s |> Sexplib.Sexp.of_string |> C.action_of_sexp; - let init = any => C.init(any) |> Option.map(serialize_m); + let init = (any, seg) => + C.init(any, seg) |> Option.map(((m, seg)) => (serialize_m(m), seg)); let focusable = C.focusable; let dynamics = C.dynamics; let view = (args: View.args(model, action)) => @@ -220,10 +249,17 @@ module Cook = (C: Projector) : Cooked => { local: a => args.local(serialize_a(a)), parent: args.parent, view_seg: args.view_seg, + splice_view: args.splice_view, + splice_size: args.splice_size, + splices: args.splices, status: args.status, }); - let placeholder = m => - m |> Sexplib.Sexp.of_string |> C.model_of_sexp |> C.placeholder; + let placeholder = (m, info, splice_size) => + C.placeholder( + m |> Sexplib.Sexp.of_string |> C.model_of_sexp, + info, + splice_size, + ); let update = (m, i, a) => C.update(m |> deserialize_m, i, a |> deserialize_a) |> serialize_m; }; diff --git a/src/haz3lcore/projectors/ProjectorInfo.re b/src/haz3lcore/projectors/ProjectorInfo.re index b941eb2dd2..1638bed03d 100644 --- a/src/haz3lcore/projectors/ProjectorInfo.re +++ b/src/haz3lcore/projectors/ProjectorInfo.re @@ -14,11 +14,11 @@ let utility: ProjectorBase.utility = { show_unknown_as_hole: false, }, ); - let lift_syntax = - (fn: Any.t => Any.t, seg: Base.segment): option(Base.segment) => + let lift_term = + (fn: Any.t => Any.t, seg: Base.segment): option(Any.t) => switch (seg |> seg_to_term) { | None => None - | Some(s) => Some(s |> fn |> term_to_seg) + | Some(s) => Some(s |> fn) }; /* NOTE: Setting indent to anything other than "" has serious * perf implications when there are lots of probes on the screen */ @@ -26,7 +26,7 @@ let utility: ProjectorBase.utility = { { term_to_seg, seg_to_term, - lift_syntax, + lift_term, seg_to_string, }; }; @@ -40,7 +40,7 @@ let mk_info = ) : ProjectorBase.info => { id: p.id, - syntax: Piece.unparenthesize(p.syntax), + syntax: p.syntax, statics: Statics.Map.lookup(p.id, statics), dynamics: switch (Dynamics.Map.lookup(p.id, dynamics)) { @@ -60,11 +60,16 @@ module ShapeMapSemantics = { sample_cursor: Language.Sample.Cursor.t, statics: Statics.Map.t, dynamics: Dynamics.Map.t, + splice_size: ProjectorBase.View.splice_size, p: Base.projector, ) : ProjectorCore.Shape.t => { let (module P) = ProjectorInit.to_module(p.kind); - P.placeholder(p.model, mk_info(p, ~sample_cursor, ~statics, ~dynamics)); + P.placeholder( + p.model, + mk_info(p, ~sample_cursor, ~statics, ~dynamics), + splice_size, + ); }; let mk = @@ -73,10 +78,16 @@ module ShapeMapSemantics = { refractors: ZipperBase.Refractor.t, statics: Statics.Map.t, dynamics: Dynamics.Map.t, + splice_size: ProjectorBase.View.splice_size, ) : Id.Map.t(ProjectorCore.Shape.t) => Id.Map.map( - from_semantics(refractors.sample_cursor, statics, dynamics), + from_semantics( + refractors.sample_cursor, + statics, + dynamics, + splice_size, + ), proj_map, ); }; diff --git a/src/haz3lcore/projectors/ProjectorInit.re b/src/haz3lcore/projectors/ProjectorInit.re index cf18e48429..80d086be84 100644 --- a/src/haz3lcore/projectors/ProjectorInit.re +++ b/src/haz3lcore/projectors/ProjectorInit.re @@ -16,22 +16,32 @@ let to_module = (kind: ProjectorCore.Kind.t): (module Cooked) => | Livelit => (module Cook(LivelitProj.M)) | Card => (module Cook(CardProj.M)) | Csv => (module Cook(CSVProjector.M)) + | VList => (module Cook(VListProj.M)) }; +/* Construct a Projector piece wrapping the given syntax segment. + * The projector's [init] may optionally return a replacement segment + * (e.g. to wrap list items in splices); if so, the stored syntax is + * set to that replacement instead of [syntax]. */ let init = (kind: ProjectorCore.Kind.t, syntax: syntax, any: Language.Any.t) - : option(syntax) => { + : option(Base.piece) => { let (module P) = to_module(kind); - switch (P.init(any)) { + switch (P.init(any, syntax)) { | None => None - | Some(model) => Some(Projector(ProjectorCore.mk(kind, syntax, model))) + | Some((model, override)) => + let syntax = Option.value(override, ~default=syntax); + Some(Projector(ProjectorCore.mk(kind, syntax, model))); }; }; +/* Like [init], but falls back to wrapping the syntax in no projector + * (returning the original syntax as a segment) when init declines. */ let init_or_noop = - (kind: ProjectorCore.Kind.t, syntax: syntax, any: Language.Any.t): syntax => + (kind: ProjectorCore.Kind.t, syntax: syntax, any: Language.Any.t) + : Base.segment => switch (init(kind, syntax, any)) { - | Some(pr) => pr + | Some(pr) => [pr] | None => syntax }; @@ -42,10 +52,12 @@ let init_or_noop_from_str = any: Language.Any.t, model_str: string, ) - : syntax => { + : Base.segment => { let (module P) = to_module(kind); - switch (P.init(any)) { + switch (P.init(any, syntax)) { | None => syntax - | Some(_) => Projector(ProjectorCore.mk(kind, syntax, model_str)) + | Some((_, override)) => + let syntax = Option.value(override, ~default=syntax); + [Projector(ProjectorCore.mk(kind, syntax, model_str))]; }; }; diff --git a/src/haz3lcore/projectors/ProjectorPerform.re b/src/haz3lcore/projectors/ProjectorPerform.re index 7de36b178c..84dc715c62 100644 --- a/src/haz3lcore/projectors/ProjectorPerform.re +++ b/src/haz3lcore/projectors/ProjectorPerform.re @@ -1,4 +1,3 @@ -open ProjectorBase; open Util; open OptUtil.Syntax; @@ -23,12 +22,13 @@ open OptUtil.Syntax; * neighboring infix operation was added which binds tighter. Again, * this is the same as would happen if unparenthesizing a subterm. */ -let init = (kind: ProjectorCore.Kind.t, seg: Base.segment): option(syntax) => - /* Projected syntax always gets parenthesized, but only the contents - * of those parentheses are passed to the projector implementations */ +let init = + (kind: ProjectorCore.Kind.t, seg: Base.segment): option(Base.piece) => + /* A projector's [syntax] is the segment it wraps directly. Projector + * implementations see the same segment we hand them here. */ switch (MakeTerm.for_projection(seg)) { | None => None - | Some(any) => ProjectorInit.init(kind, Segment.parenthesize(seg), any) + | Some(any) => ProjectorInit.init(kind, seg, any) }; /* Get the root term ID from a segment, if it's a well-formed term */ @@ -56,14 +56,42 @@ let replace_selection_and_unselect = |> Zipper.replace_selection(focus, [piece]) |> Zipper.directional_unselect(focus); -let remove = (piece: Base.piece, focus: Direction.t, z: Zipper.t): Zipper.t => { - let seg = Piece.unparenthesize(piece); +let remove = (seg: Base.segment, focus: Direction.t, z: Zipper.t): Zipper.t => /* If it's a convex tile, unselect; otherwise, leave selection to guarantee you can toggle */ switch (seg) { | [piece] => replace_selection_and_unselect(piece, Right, z) | _ => Zipper.replace_selection(focus, seg, z) }; -}; + +let rec unsplice_segment = (seg: Base.segment): Base.segment => + List.concat_map( + (p: Base.piece) => + switch (p) { + | Splice(s) => unsplice_segment(s.content) + | Tile(t) => [ + Tile({ + ...t, + children: List.map(unsplice_segment, t.children), + }), + ] + | Projector(_) + | Grout(_) + | Secondary(_) => [p] + }, + seg, + ); + +let term_to_segment = + (~original_syntax: Base.segment, ~preserve_splices: bool, term) => + ExpToSegment.any_to_projector_segment( + ~settings={ + ...ExpToSegment.Settings.of_core(~inline=true, Language.CoreSettings.off), + show_unknown_as_hole: false, + }, + ~original_syntax, + ~preserve_splices, + term, + ); let update_piece = (f: Base.projector => Base.projector, id: Id.t, piece: Base.piece) @@ -78,6 +106,70 @@ let update = : ZipperBase.t => ZipperBase.MapPiece.fast_local_seg(update_piece(f, id), id, z); +let inside_projector = (id: Id.t, z: Zipper.t): bool => + List.exists( + ((ancestor, _)) => + switch (ancestor) { + | Ancestor.Projector({id: projector_id, _}) => projector_id == id + | _ => false + }, + z.relatives.ancestors, + ); + +let containing_projector = (z: Zipper.t): option(Id.t) => + List.find_map( + ((ancestor, _)) => + switch (ancestor) { + | Ancestor.Projector({id, _}) => Some(id) + | _ => None + }, + z.relatives.ancestors, + ); + +let update_from_root = + (f: Base.projector => Base.projector, id: Id.t, z: Zipper.t): Zipper.t => { + let segment = + Zipper.unselect_and_zip(z) + |> ZipperBase.MapPiece.of_segment(update_piece(f, id)); + { + ...Zipper.unzip(segment), + refractors: z.refractors, + }; +}; + +let rec find_projector = + (id: Id.t, seg: Base.segment): option(Base.projector) => + List.find_map( + (p: Base.piece) => + switch (p) { + | Projector(pr) when pr.id == id => Some(pr) + | Tile(t) => List.find_map(find_projector(id), t.children) + | _ => None + }, + seg, + ); + +let remove_from_root = (id: Id.t, z: Zipper.t): option(Zipper.t) => { + let segment = Zipper.unselect_and_zip(z); + let* pr = find_projector(id, segment); + let z = + switch (seg_root_id(pr.syntax)) { + | Some(term_id) => migrate_refractor(pr.id, term_id, z) + | None => z + }; + let segment = + ZipperBase.MapPiece.of_segment( + fun + | Projector(pr') when pr'.id == id => unsplice_segment(pr'.syntax) + | p => [p], + segment, + ); + Some({ + ...Zipper.unzip(segment), + refractors: z.refractors, + }); +}; + let go = ( term_data: TermData.t, @@ -118,16 +210,15 @@ let go = switch (z.selection.content) { | [Projector(pr)] when pr.kind == kind => /* Remove projector: migrate refractor back to underlying term */ - let underlying_seg = Piece.unparenthesize(pr.syntax); let z = - switch (seg_root_id(underlying_seg)) { + switch (seg_root_id(pr.syntax)) { | Some(term_id) => migrate_refractor(pr.id, term_id, z) | None => z }; - Some(remove(pr.syntax, focus, z)); + Some(remove(unsplice_segment(pr.syntax), focus, z)); | [Projector(pr)] => /* Switch projector kind: migrate refractor to new projector */ - let+ piece = init(kind, Piece.unparenthesize(pr.syntax)); + let+ piece = init(kind, unsplice_segment(pr.syntax)); let z = switch (piece) { | Projector(new_pr) => migrate_refractor(pr.id, new_pr.id, z) @@ -152,13 +243,12 @@ let go = switch (z.selection.content) { | [Projector(pr)] => /* Migrate refractor back to underlying term */ - let underlying_seg = Piece.unparenthesize(pr.syntax); let z = - switch (seg_root_id(underlying_seg)) { + switch (seg_root_id(pr.syntax)) { | Some(term_id) => migrate_refractor(pr.id, term_id, z) | None => z }; - Some(remove(pr.syntax, focus, z)); + Some(remove(unsplice_segment(pr.syntax), focus, z)); | _ => None }; }; @@ -180,22 +270,30 @@ let go = | [] => Error(Cant_project) } | RemoveIndicated => - switch (remove_indicated(z)) { + let removed_from_root = + switch (containing_projector(z)) { + | Some(id) => remove_from_root(id, z) + | None => None + }; + switch (removed_from_root) { | Some(z) => Ok(z) - | None => Error(Cant_project) - } - | SetSyntax(idx, seg) => + | None => + switch (remove_indicated(z)) { + | Some(z) => Ok(z) + | None => Error(Cant_project) + } + }; + | SetSyntax(idx, term, preserve_splices) => + let id = projector_idx_to_id(idx); + let f = (p: Base.projector) => { + ...p, + syntax: + term_to_segment(~original_syntax=p.syntax, ~preserve_splices, term), + }; Ok( - update( - p => - { - ...p, - syntax: Segment.parenthesize(seg), - }, - projector_idx_to_id(idx), - z, - ), - ) + inside_projector(id, z) + ? update_from_root(f, id, z) : update(f, id, z), + ); | SetModel(idx, kind, new_model) => let id = idx_to_id(kind, idx); Ok( diff --git a/src/haz3lcore/projectors/implementations/CSVProjector.re b/src/haz3lcore/projectors/implementations/CSVProjector.re index df44612fc5..06fee9a04e 100644 --- a/src/haz3lcore/projectors/implementations/CSVProjector.re +++ b/src/haz3lcore/projectors/implementations/CSVProjector.re @@ -22,13 +22,13 @@ module M: Projector = { | ToggleHeaders | Reset; - let init = (a: Language.Any.t): option(model) => { + let init = (a: Language.Any.t, _) => { switch (a) { - | Exp({term: ListLit([]), _}) => Some(NoFile) // No file selected + | Exp({term: ListLit([]), _}) => Some((NoFile, None)) // No file selected | _ => None }; }; - let put = (info, rows: CsvUtil.csv_data): Base.segment => { + let put = (info, rows: CsvUtil.csv_data): Language.Any.t => { let exp: Language.Exp.term = switch (rows) { | CsvUtil.WithHeaders(rows) => @@ -73,7 +73,7 @@ module M: Projector = { }; switch ( - info.utility.lift_syntax( + info.utility.lift_term( fun | Exp(any) => Exp({ @@ -89,13 +89,13 @@ module M: Projector = { }; }; - let reset_syntax = (info: info): Base.segment => { + let reset_syntax = (info: info): Language.Any.t => { put(info, CsvUtil.WithoutHeaders([])); }; let focusable = Focusable.non; let dynamics = false; - let placeholder = (m, _) => + let placeholder = (m, _, _) => switch (m) { | FileLoaded({filename, _}) => ProjectorCore.Shape.inline(String.length(filename) + 6) // Account for reset button and toggle @@ -184,7 +184,7 @@ module M: Projector = { content, }), ), - parent(SetSyntax(put(info, csv_data))), + parent(SetSyntax(put(info, csv_data), false)), ]), ); }, @@ -203,7 +203,7 @@ module M: Projector = { Attr.on_click(_ => { Effect.Many([ local(Reset), - parent(SetSyntax(reset_syntax(info))), + parent(SetSyntax(reset_syntax(info), false)), ]) }), Attr.class_("reset-button"), @@ -233,7 +233,7 @@ module M: Projector = { }; Effect.Many([ local(ToggleHeaders), - parent(SetSyntax(put(info, csv_data))), + parent(SetSyntax(put(info, csv_data), false)), ]); }), Attr.title("Toggle headers"), diff --git a/src/haz3lcore/projectors/implementations/CardProj.re b/src/haz3lcore/projectors/implementations/CardProj.re index a98e738138..93695cc8cf 100644 --- a/src/haz3lcore/projectors/implementations/CardProj.re +++ b/src/haz3lcore/projectors/implementations/CardProj.re @@ -105,6 +105,7 @@ module SyntaxTerm = { | Tuple(_) => p | _ => strip_wraps_pat(inner) } + | Splice(inner) => strip_wraps_pat(inner) | _ => p }; }; @@ -115,6 +116,7 @@ module SyntaxTerm = { | Tuple(_) => e | _ => strip_wraps_exp(inner) } + | Splice(inner) => strip_wraps_exp(inner) | _ => e }; }; @@ -239,8 +241,8 @@ module SyntaxTerm = { }; }; - let put = (info, syntax): option(Base.segment) => - info.utility.lift_syntax(_ => syntax_to_any(syntax), info.syntax); + let put = (info, syntax): option(Any.t) => + info.utility.lift_term(_ => syntax_to_any(syntax), info.syntax); let get_opt = (any: Any.t): option(state) => switch (any |> any_to_syntax) { @@ -404,7 +406,7 @@ module Chooser = { }; switch (action |> update(SyntaxTerm.get(info)) |> SyntaxTerm.put(info)) { | None => Effect.Ignore - | Some(seg) => parent(SetSyntax(seg)) + | Some(term) => parent(SetSyntax(term, false)) }; }; @@ -614,10 +616,10 @@ module M: Projector = { let focusable = Focusable.non; let dynamics = false; - let init = (info: TermBase.Any.t): option(model) => - SyntaxTerm.get_opt(info) != None ? Some({mode: Show}) : None; + let init = (info: TermBase.Any.t, _) => + SyntaxTerm.get_opt(info) != None ? Some(({mode: Show}, None)) : None; - let placeholder = (_, info): ProjectorCore.Shape.t => { + let placeholder = (_, info, _splice_size): ProjectorCore.Shape.t => { horizontal: SyntaxTerm.width_of_any(info), vertical: Tab(1), }; diff --git a/src/haz3lcore/projectors/implementations/CheckboxProj.re b/src/haz3lcore/projectors/implementations/CheckboxProj.re index 8447fae5c6..6755979d03 100644 --- a/src/haz3lcore/projectors/implementations/CheckboxProj.re +++ b/src/haz3lcore/projectors/implementations/CheckboxProj.re @@ -14,9 +14,9 @@ module M: Projector = { | _ => None }; - let init = (any: Language.Any.t) => + let init = (any: Language.Any.t, _) => switch (bool_of(any)) { - | Some(_) => Some() + | Some(_) => Some(((), None)) | None => None }; @@ -28,9 +28,9 @@ module M: Projector = { | None => failwith("Checkbox: Get: not boolean literal") }; - let toggle = (info): Base.segment => + let toggle = (info): Language.Any.t => switch ( - info.utility.lift_syntax( + info.utility.lift_term( fun | Exp({term: Atom(Bool(b)), _} as t) => Exp({ @@ -47,7 +47,7 @@ module M: Projector = { let focusable = Focusable.non; let dynamics = false; - let placeholder = (_, _) => ProjectorCore.Shape.inline(2); + let placeholder = (_, _, _) => ProjectorCore.Shape.inline(2); let update = (model, _, _) => model; let view = ({info, parent, _}: View.args(model, action)) => @@ -56,7 +56,7 @@ module M: Projector = { ~attrs= [ Attr.create("type", "checkbox"), - Attr.on_input((_, _) => parent(SetSyntax(toggle(info)))), + Attr.on_input((_, _) => parent(SetSyntax(toggle(info), false))), ] @ (info |> get ? [Attr.checked] : []), (), diff --git a/src/haz3lcore/projectors/implementations/FoldProj.re b/src/haz3lcore/projectors/implementations/FoldProj.re index ff9e7a4d27..5ac90ac9d6 100644 --- a/src/haz3lcore/projectors/implementations/FoldProj.re +++ b/src/haz3lcore/projectors/implementations/FoldProj.re @@ -30,12 +30,12 @@ module M: Projector = { type action = | Toggle; - let init = _ => Some(default); + let init = (_, _) => Some((default, None: option(Base.segment))); let focusable = Focusable.non; let dynamics = false; - let placeholder = (m, _) => + let placeholder = (m, _, _) => ProjectorCore.Shape.inline(m.text == "⋱" ? 2 : m.text |> String.length); let update = (m, _, _) => { ...m, diff --git a/src/haz3lcore/projectors/implementations/LivelitProj.re b/src/haz3lcore/projectors/implementations/LivelitProj.re index d14f3b5ebc..b956c3d84a 100644 --- a/src/haz3lcore/projectors/implementations/LivelitProj.re +++ b/src/haz3lcore/projectors/implementations/LivelitProj.re @@ -21,18 +21,18 @@ module M: Projector = { | _ => None }; - let init = (any: Language.Any.t) => + let init = (any: Language.Any.t, _) => switch (any) { | Exp({term: Ap(_dir, {term: LivelitName(_), _}, _), _}) | Exp({ term: Parens({term: Ap(_dir, {term: LivelitName(_), _}, _), _}), _, }) => - Some() + Some(((), None)) | _ => None }; - let placeholder = (_model, info) => { + let placeholder = (_model, info, _splice_size) => { switch (get_model(info), info.statics) { | (Some((llname, _)), Some(InfoExp(exp))) => /* Get the livelit size */ @@ -95,16 +95,16 @@ module M: Projector = { let action_callback = (action: LivelitCtx.action_exp) => { let new_model = ll.update(action, model); - let updated_segment = - info.utility.lift_syntax( + let updated_term = + info.utility.lift_term( replace_model_term(new_model), info.syntax, ); - switch (updated_segment) { - | Some(s) => parent(SetSyntax(s)) + switch (updated_term) { + | Some(s) => parent(SetSyntax(s, false)) | None => - print_endline("Warning - LivelitProj.view: lift_syntax failed"); + print_endline("Warning - LivelitProj.view: lift_term failed"); Ui_effect.Ignore; }; }; diff --git a/src/haz3lcore/projectors/implementations/ProbeProj.re b/src/haz3lcore/projectors/implementations/ProbeProj.re index 90b3190161..e97cc94405 100644 --- a/src/haz3lcore/projectors/implementations/ProbeProj.re +++ b/src/haz3lcore/projectors/implementations/ProbeProj.re @@ -1046,8 +1046,7 @@ let offside_view = parent, ~settings: settings, view_seg: - (~background: bool=?, ~text_only: bool=?, Sort.t, list(syntax)) => - Node.t, + (~background: bool=?, ~text_only: bool=?, Sort.t, syntax) => Node.t, utility: utility, ) => switch (info.dynamics) { @@ -1171,13 +1170,15 @@ module M: Projector = { [@deriving (show({with_path: false}), sexp, yojson)] type action = a; - let init = (any: Any.t) => + let init = (any: Any.t, _) => { + let none_seg: option(Base.segment) = None; switch (any) { | Exp(_) - | Pat(_) => Some() - | Any(_) => Some() /* Grout don't have sorts rn */ + | Pat(_) => Some(((), none_seg)) + | Any(_) => Some(((), none_seg)) /* Grout don't have sorts rn */ | _ => None }; + }; let dynamics = true; @@ -1187,7 +1188,7 @@ module M: Projector = { keyboard: None, }; - let placeholder = (_, _) => ProjectorCore.Shape.default; + let placeholder = (_, _, _) => ProjectorCore.Shape.default; let update = update; diff --git a/src/haz3lcore/projectors/implementations/SliderFProj.re b/src/haz3lcore/projectors/implementations/SliderFProj.re index 1012cc3531..d46e0dfc2b 100644 --- a/src/haz3lcore/projectors/implementations/SliderFProj.re +++ b/src/haz3lcore/projectors/implementations/SliderFProj.re @@ -14,9 +14,9 @@ module M: Projector = { | _ => None }; - let init = (any: Language.Any.t) => + let init = (any: Language.Any.t, _) => switch (float_of(any)) { - | Some(_) => Some() + | Some(_) => Some(((), None)) | None => None }; @@ -28,9 +28,9 @@ module M: Projector = { | None => failwith("SliderF: Get: not float literal") }; - let put = (info: info, v: string): Base.segment => + let put = (info: info, v: string): Language.Any.t => switch ( - info.utility.lift_syntax( + info.utility.lift_term( fun | Exp(t) => Exp({ @@ -47,13 +47,15 @@ module M: Projector = { let focusable = Focusable.non; let dynamics = false; - let placeholder = (_, _) => ProjectorCore.Shape.inline(10); + let placeholder = (_, _, _) => ProjectorCore.Shape.inline(10); let update = (model, _, _) => model; let view = ({info, parent, _}: View.args(model, action)) => View.mk( Util.WebUtil.range( - ~attrs=[Attr.on_input((_, v) => parent(SetSyntax(put(info, v))))], + ~attrs=[ + Attr.on_input((_, v) => parent(SetSyntax(put(info, v), false))), + ], info |> get |> Printf.sprintf("%.2f"), ), ); diff --git a/src/haz3lcore/projectors/implementations/SliderProj.re b/src/haz3lcore/projectors/implementations/SliderProj.re index 019f722298..945864f7c8 100644 --- a/src/haz3lcore/projectors/implementations/SliderProj.re +++ b/src/haz3lcore/projectors/implementations/SliderProj.re @@ -14,9 +14,9 @@ module M: Projector = { | _ => None }; - let init = (any: Language.Any.t) => + let init = (any: Language.Any.t, _) => switch (int_of(any)) { - | Some(_) => Some() + | Some(_) => Some(((), None)) | None => None }; @@ -28,9 +28,9 @@ module M: Projector = { | None => failwith("Slider: Get: not integer literal") }; - let put = (info: info, v: string): Base.segment => + let put = (info: info, v: string): Language.Any.t => switch ( - info.utility.lift_syntax( + info.utility.lift_term( fun | Exp(t) => Exp({ @@ -47,13 +47,15 @@ module M: Projector = { let focusable = Focusable.non; let dynamics = false; - let placeholder = (_, _) => ProjectorCore.Shape.inline(10); + let placeholder = (_, _, _) => ProjectorCore.Shape.inline(10); let update = (model, _, _) => model; let view = ({info, parent, _}: View.args(model, action)) => View.mk( Util.WebUtil.range( - ~attrs=[Attr.on_input((_, v) => parent(SetSyntax(put(info, v))))], + ~attrs=[ + Attr.on_input((_, v) => parent(SetSyntax(put(info, v), false))), + ], info |> get |> Bigint.to_string, ), ); diff --git a/src/haz3lcore/projectors/implementations/TextAreaProj.re b/src/haz3lcore/projectors/implementations/TextAreaProj.re index 748fc50d7a..7b3a82bf88 100644 --- a/src/haz3lcore/projectors/implementations/TextAreaProj.re +++ b/src/haz3lcore/projectors/implementations/TextAreaProj.re @@ -19,9 +19,9 @@ let get = (info: info): string => | None => failwith("TextArea: get: Not string literal") }; -let put = (info, s: string): Base.segment => +let put = (info, s: string): Language.Any.t => switch ( - info.utility.lift_syntax( + info.utility.lift_term( fun | Exp(any) => Exp({ @@ -69,7 +69,7 @@ let textarea = Attr.id(Id.cls(info.id)), Attr.on_keydown(key_handler(info.id, ~parent)), Attr.on_input((_, str) => - Effect.(Many([parent(SetSyntax(str |> put(info)))])) + Effect.(Many([parent(SetSyntax(str |> put(info), false))])) ), /* Note: adding these handlers below because * currently these are handled on page level. @@ -88,9 +88,9 @@ module M: Projector = { [@deriving (show({with_path: false}), sexp, yojson)] type action = unit; - let init = (any: Language.Any.t) => + let init = (any: Language.Any.t, _) => switch (string_of(any)) { - | Some(_) => Some() + | Some(_) => Some(((), None)) | None => None }; @@ -114,7 +114,7 @@ module M: Projector = { keyboard: Some(focus_keyboard), }; let dynamics = false; - let placeholder = (_, info) => { + let placeholder = (_, info, _splice_size) => { let str = info |> get; ProjectorCore.Shape.{ vertical: Block(StringUtil.num_linebreaks(str)), diff --git a/src/haz3lcore/projectors/implementations/TypeProj.re b/src/haz3lcore/projectors/implementations/TypeProj.re index 48043175fd..fab3bd1023 100644 --- a/src/haz3lcore/projectors/implementations/TypeProj.re +++ b/src/haz3lcore/projectors/implementations/TypeProj.re @@ -34,11 +34,12 @@ module M: Projector = { type action = | ToggleDisplay; - let init = (any: Any.t): option(model) => { + let init = (any: Any.t, _) => { + let none_seg: option(Base.segment) = None; switch (any) { | Exp(_) - | Pat(_) => Some(Expected) - | Any () => Some(Expected) /* Grout don't have sorts rn */ + | Pat(_) => Some((Expected, none_seg)) + | Any () => Some((Expected, none_seg)) /* Grout don't have sorts rn */ | _ => None }; }; @@ -86,7 +87,7 @@ module M: Projector = { | (ToggleDisplay, Self) => Expected }; - let placeholder = (_, _) => ProjectorCore.Shape.default; + let placeholder = (_, _, _) => ProjectorCore.Shape.default; let view = ({model, info, local, view_seg, _}: View.args(model, action)) => View.{ diff --git a/src/haz3lcore/projectors/implementations/VListProj.re b/src/haz3lcore/projectors/implementations/VListProj.re new file mode 100644 index 0000000000..0fc7e0f017 --- /dev/null +++ b/src/haz3lcore/projectors/implementations/VListProj.re @@ -0,0 +1,280 @@ +open Util; +open Util.OptUtil.Syntax; +open Virtual_dom.Vdom; +open ProjectorBase; +open Language; + +/* Vertical list projector. + * + * Renders the items of a Hazel list literal [e0, ..., eN-1] as + * splice editors stacked vertically, with [+]/[-] buttons to add + * or remove items. Because splices are transparent at term-construction + * time, the underlying term is a normal ListLit(...), so statics and + * dynamics see a real list. */ + +/* An "empty" splice contains a single Convex grout (an empty hole), + * matching how the rest of the zipper represents empty term positions. + * A literally-empty content segment would be rejected downstream + * (e.g. [Segment.skel] raises [Nonconvex_segment] on [[]]). */ +let empty_splice = (): Base.piece => + Piece.mk_splice([Piece.mk_grout(Convex)]); + +let comma_piece = (): Base.piece => Piece.mk_tile(Form.get(CommaExp), []); + +let empty_list_piece = (): Base.piece => + Base.Tile({ + id: Id.mk(), + label: ["[]"], + mold: Mold.mk_op(Sort.Exp, []), + shards: [0], + children: [], + }); + +let list_piece = (inner: Base.segment): Base.piece => + Piece.mk_tile(Form.get(ListLitExp), [inner]); + +let is_comma_tile = (p: Base.piece): bool => + switch (p) { + | Tile({label: [","], _}) => true + | _ => false + }; + +/* Given a list of splice pieces, interleave with commas to form the + * list tile's child segment: + * [s0; s1; s2] ~> [s0, comma, s1, comma, s2] */ +let interleave_with_commas = (splices: list(Base.piece)): Base.segment => + switch (splices) { + | [] => [] + | [s, ...rest] => [s] @ List.concat_map(s => [comma_piece(), s], rest) + }; + +let build_list_syntax = (splices: list(Base.piece)): Base.segment => + switch (splices) { + | [] => [empty_list_piece()] + | splices => [list_piece(interleave_with_commas(splices))] + }; + +/* Split a segment at comma tiles (at the top level), returning the + * segment groups between commas. An empty segment yields [[]]. */ +let split_at_commas = (seg: Base.segment): list(Base.segment) => { + let (groups, last) = + List.fold_left( + ((groups, current), p: Base.piece) => + if (is_comma_tile(p)) { + (groups @ [current], []); + } else { + (groups, current @ [p]); + }, + ([], []), + seg, + ); + groups @ [last]; +}; + +/* Drop leading and trailing secondary (whitespace/comment) pieces so + * that items extracted from between commas start clean. */ +let trim_secondary = (seg: Base.segment): Base.segment => { + let drop_while = (p: Base.piece => bool, xs) => + List.fold_left( + (acc, x) => + switch (acc) { + | [] when p(x) => [] + | _ => acc @ [x] + }, + [], + xs, + ); + let is_secondary = (p: Base.piece) => + switch (p) { + | Secondary(_) => true + | _ => false + }; + seg + |> drop_while(is_secondary) + |> List.rev + |> drop_while(is_secondary) + |> List.rev; +}; + +/* Extract the splice pieces from the VList's stored syntax. Returns + * [None] if the syntax doesn't have the expected shape (e.g. the user + * has edited it via a SetSyntax into something unexpected). */ +let get_splices_from_syntax = + (syntax: Base.segment): option(list(Base.splice)) => { + let* items_child = + switch (syntax) { + | [Tile({label: [t], children: [], _})] when Token.is_empty_list(t) => + Some([]) + | [Tile({children: [child], _})] => Some(child) + | _ => None + }; + /* Child is either [] (empty) or [splice; comma; splice; ...; splice] */ + let rec extract = (pieces: Base.segment): option(list(Base.splice)) => + switch (pieces) { + | [] => Some([]) + | [Splice(s)] => Some([s]) + | [Splice(s), Tile(_), ...rest] => + let+ tail = extract(rest); + [s, ...tail]; + | _ => None + }; + extract(items_child); +}; + +let splices_to_syntax = (splices: list(Base.splice)): Base.segment => { + let pieces = List.map((s: Base.splice) => Base.Splice(s), splices); + build_list_syntax(pieces); +}; + +/* Build the initial projector syntax by walking the selected segment: + * locate the [ ... ] tile, split its inner child at commas, and wrap + * each item in a splice. Returns [None] if the shape doesn't match. */ +let transform_selected = (seg: Base.segment): option(Base.segment) => { + let* items_child = + switch (seg) { + | [Tile({label: [t], children: [], _})] when Token.is_empty_list(t) => + Some([]) + | [Tile({label: ["[", "]"], children: [child], _})] => Some(child) + | _ => None + }; + let splices = + switch (split_at_commas(items_child)) { + | [[]] => [empty_splice()] /* empty input: start with one empty splice */ + | groups => + List.map( + (g: Base.segment) => Piece.mk_splice(trim_secondary(g)), + groups, + ) + }; + Some(build_list_syntax(splices)); +}; + +module M: Projector = { + [@deriving (show({with_path: false}), sexp, yojson)] + type model = unit; + [@deriving (show({with_path: false}), sexp, yojson)] + type action = unit; + + let focusable = Focusable.non; + let dynamics = false; + + let init = (any: Any.t, seg: Base.segment) => + switch (any) { + | Exp({term: ListLit(_), _}) => + switch (transform_selected(seg)) { + | Some(syntax) => Some(((), Some(syntax))) + | None => + /* Fallback: synthesise a single-item list if we can't parse the + * selected segment's shape. */ + let syntax = build_list_syntax([empty_splice()]); + Some(((), Some(syntax))); + } + | _ => None + }; + + /* The projector occupies vertical rows totalling the stacked splice + * content plus one row for the button bar. */ + let placeholder = ((), info: info, splice_size: View.splice_size) => { + let splices = + Option.value(get_splices_from_syntax(info.syntax), ~default=[]); + let splice_rows = + List.fold_left( + (acc, s: Base.splice) => acc + max(1, splice_size(s.id).row + 1), + 0, + splices, + ); + let rows = + /* Button row + top/bottom padding + stacked splice rows/gaps. */ + splice_rows + 2; + let cols = + List.fold_left( + (acc, s: Base.splice) => + /* Add room for the inline-editor hex padding on both sides. */ + max(acc, splice_size(s.id).col + 3), + 7, /* minimum width so the buttons and padding fit */ + splices, + ); + ProjectorCore.Shape.{ + horizontal: cols, + vertical: Block(rows), + }; + }; + + let update = ((), _, ()) => (); + + let splices_to_term = (info: info, splices: list(Base.splice)): Any.t => + switch (info.utility.seg_to_term(splices_to_syntax(splices))) { + | Some(term) => term + | None => failwith("VListProj: failed to convert splices to list term") + }; + + let add_item = (info: info, parent) => + switch (get_splices_from_syntax(info.syntax)) { + | None => Ui_effect.Ignore + | Some(splices) => + let new_splice = + switch (empty_splice()) { + | Splice(s) => s + | _ => failwith("VListProj.add_item: empty_splice is not a splice") + }; + let new_splices = splices @ [new_splice]; + parent(SetSyntax(splices_to_term(info, new_splices), true)); + }; + + let remove_item = (info: info, parent) => + switch (get_splices_from_syntax(info.syntax)) { + | None + | Some([]) => Ui_effect.Ignore + | Some(splices) => + let n = List.length(splices); + let new_splices = List.filteri((i, _) => i < n - 1, splices); + parent(SetSyntax(splices_to_term(info, new_splices), true)); + }; + + let button = (~label: string, ~disabled: bool, ~on_click) => { + let base = [ + Attr.classes(["vlist-btn"]), + Attr.on_pointerdown(_ => + disabled + ? Effect.Stop_propagation + : Effect.Many([Effect.Stop_propagation, on_click()]) + ), + Attr.on_mousedown(_ => Effect.Stop_propagation), + Attr.on_click(_ => Effect.Stop_propagation), + ]; + Node.button( + ~attrs=disabled ? [Attr.disabled, ...base] : base, + [Node.text(label)], + ); + }; + + let view = ({info, parent, splice_view, _}: View.args(model, action)) => { + let splices = + Option.value(get_splices_from_syntax(info.syntax), ~default=[]); + let empty = splices == []; + let buttons = + Node.div( + ~attrs=[Attr.classes(["vlist-buttons"])], + [ + button(~label="+", ~disabled=false, ~on_click=() => + add_item(info, parent) + ), + button(~label="-", ~disabled=empty, ~on_click=() => + remove_item(info, parent) + ), + ], + ); + let rows = + List.map( + (s: Base.splice) => + Node.div( + ~attrs=[Attr.classes(["vlist-row"])], + [splice_view(s.id)], + ), + splices, + ); + View.mk( + Node.div(~attrs=[Attr.classes(["vlist"])], [buttons, ...rows]), + ); + }; +}; diff --git a/src/haz3lcore/tiles/Base.re b/src/haz3lcore/tiles/Base.re index 53419ea1c8..daad57d0fe 100644 --- a/src/haz3lcore/tiles/Base.re +++ b/src/haz3lcore/tiles/Base.re @@ -7,6 +7,7 @@ and piece = | Grout(Grout.t) | Secondary(Secondary.t) | Projector(projector) + | Splice(splice) and tile = { // invariants: // - length(mold.in_) + 1 == length(label) @@ -20,10 +21,17 @@ and tile = { shards: list(int), children: list(segment), } -and projector = ProjectorCore.t(piece); +and projector = ProjectorCore.t(segment) +and splice = { + [@equal (_, _) => true] + id: Id.t, + content: segment, +}; /* If the piece is parentheses, return the child. Otherwise, - * return a singleton segment consisting of the piece */ + * return a singleton segment consisting of the piece. + * Note: projector syntax is now a segment directly; this helper + * remains for the parenthesized-tile case. */ let unparenthesize = (piece: piece): segment => switch (piece) { | Tile({ @@ -91,6 +99,15 @@ and piece_to_string = ~projector_to_segment, projector_to_segment(p), ) + | Splice(s) => + segment_to_string( + ~holes, + ~concave_holes, + ~refractors, + ~refractor_seg_to_seg, + ~projector_to_segment, + s.content, + ) } and tile_to_string = ( diff --git a/src/haz3lcore/tiles/Piece.re b/src/haz3lcore/tiles/Piece.re index 0cc2242bf9..e346fc1624 100644 --- a/src/haz3lcore/tiles/Piece.re +++ b/src/haz3lcore/tiles/Piece.re @@ -6,17 +6,26 @@ type t = piece; let secondary = w => Secondary(w); let grout = g => Grout(g); let tile = t => Tile(t); +let splice = s => Splice(s); -let get = (f_w, f_g, f_t: tile => _, f_p: projector => _, p: t) => +let get = + (f_w, f_g, f_t: tile => _, f_p: projector => _, f_s: splice => _, p: t) => switch (p) { | Secondary(w) => f_w(w) | Grout(g) => f_g(g) | Tile(t) => f_t(t) | Projector(p) => f_p(p) + | Splice(s) => f_s(s) }; let id = - get(Secondary.id, Grout.id, tile => tile.id, projector => projector.id); + get( + Secondary.id, + Grout.id, + tile => tile.id, + projector => projector.id, + splice => splice.id, + ); let sort = get( @@ -24,6 +33,7 @@ let sort = _ => (Sort.Any, []), t => (t.mold.out, t.mold.in_), _ => (Sort.Any, []), + _ => (Sort.Any, []), ); let nibs = @@ -60,6 +70,21 @@ let nibs = ), ); }, + _ => + /* Splices are convex/convex like projectors; they are atomic + * from the caret's perspective when scanning the parent segment. */ + Some( + Nib.( + { + shape: Convex, + sort: Any, + }, + { + shape: Convex, + sort: Any, + }, + ), + ), ); let nib_sorts = @@ -71,30 +96,35 @@ let nib_sorts = (l.sort, r.sort); }, _ => (Sort.Any, Sort.Any), + _ => (Sort.Any, Sort.Any), ); -let sorted_children = get(_ => [], _ => [], Tile.sorted_children, _ => []); +let sorted_children = + get(_ => [], _ => [], Tile.sorted_children, _ => [], _ => []); let pop_l = (p: t): (t, segment) => switch (p) { | Tile(t) => Tile.pop_l(t) | Grout(_) | Secondary(_) - | Projector(_) => (p, []) + | Projector(_) + | Splice(_) => (p, []) }; let pop_r = (p: t): (segment, t) => switch (p) { | Tile(t) => Tile.pop_r(t) | Grout(_) | Secondary(_) - | Projector(_) => ([], p) + | Projector(_) + | Splice(_) => ([], p) }; let disassemble = (p: t): segment => switch (p) { | Grout(_) | Secondary(_) - | Projector(_) => [p] + | Projector(_) + | Splice(_) => [p] | Tile(t) => Tile.disassemble(t) }; @@ -104,6 +134,7 @@ let shapes = g => Some(Grout.shapes(g)), t => Some(Tile.shapes(t)), p => Some(ProjectorCore.shapes(p)), + _ => Some(Nib.Shape.(Convex, Convex)), ); let is_convex = (p: t): bool => @@ -132,6 +163,11 @@ let is_projector: t => option(projector) = | Projector(p) => Some(p) | _ => None; +let is_splice: t => option(splice) = + fun + | Splice(s) => Some(s) + | _ => None; + let label: t => option(Label.t) = fun | Tile({label, _}) => Some(label) @@ -164,6 +200,11 @@ let replace_id = (id: Id.t, p: t): t => ...p, id, }) + | Splice(s) => + Splice({ + ...s, + id, + }) }; let mk_secondary = (id, content) => Secondary(Secondary.mk(id, content)); @@ -174,6 +215,14 @@ let mk_grout = (~id=Id.mk(), shape: Grout.shape): t => shape, }); +let mk_splice = (~id=Id.mk(), content: segment): t => { + let content = content == [] ? [mk_grout(Convex)] : content; + splice({ + id, + content, + }); +}; + let mk_tile: (Form.t, list(list(t))) => t = (form, children) => Tile({ @@ -188,6 +237,7 @@ let is_term = (p: t) => switch (p) { | Grout(_) | Projector(_) + | Splice(_) | Tile({ label: [_], mold: {nibs: ({shape: Convex, _}, {shape: Convex, _}), _}, @@ -215,6 +265,7 @@ let token_of = (p: t): option(Token.t) => | Secondary(w) => Some(Secondary.get_string(w.content)) | Grout(_) => None | Projector(_) => None + | Splice(_) => None }; let l_shard_of = (p: t): t => diff --git a/src/haz3lcore/tiles/Segment.re b/src/haz3lcore/tiles/Segment.re index 889e5016e1..2740e3a6a2 100644 --- a/src/haz3lcore/tiles/Segment.re +++ b/src/haz3lcore/tiles/Segment.re @@ -89,6 +89,7 @@ let shape_affix = (([[w, ...ws], ...wss], gs), shape, tl); | Grout(g) => (Aba.cons([], g, wgw), shape, tl) | Projector(_) => (empty_wgw, shape, tl) + | Splice(_) => (empty_wgw, shape, tl) | Tile(_) => (empty_wgw, shape, tl) }; }; @@ -149,6 +150,8 @@ and remold_tile = (s: Sort.t, shape, t: Tile.t): option(Tile.t) => { children, }; } +and remold_splice = (s: Sort.t, sp: Base.splice): Piece.t => + Piece.mk_splice(~id=sp.id, remold(sp.content, s)) and remold_typ = (shape, seg: t): t => switch (seg) { | [] => [] @@ -157,6 +160,10 @@ and remold_typ = (shape, seg: t): t => | Secondary(_) | Grout(_) => [hd, ...remold_typ(shape, tl)] | Projector(p) => [hd, ...remold_typ(snd(ProjectorCore.shapes(p)), tl)] + | Splice(s) => [ + remold_splice(Typ, s), + ...remold_typ(Nib.Shape.Convex, tl), + ] | Tile(t) => switch (remold_tile(Typ, shape, t)) { | None => [Tile(t), ...remold_typ(snd(Tile.shapes(t)), tl)] @@ -181,6 +188,10 @@ and remold_typ_uni = (shape, seg: t, parent_sorts): (t, Nib.Shape.t, t) => let (remolded, shape, rest) = remold_typ_uni(snd(ProjectorCore.shapes(p)), tl, parent_sorts); ([hd, ...remolded], shape, rest); + | Splice(s) => + let (remolded, shape, rest) = + remold_typ_uni(Nib.Shape.Convex, tl, parent_sorts); + ([remold_splice(Typ, s), ...remolded], shape, rest); | Tile(t) => /* If we encounter ; and Mod or Sig is a parent sort, return to let the parent handle it as ModSeq/SigSeq. This handles cases like `type T = Int;` where ; @@ -235,6 +246,10 @@ and remold_pat_uni = (shape, seg: t, parent_sorts): (t, Nib.Shape.t, t) => let (remolded, shape, rest) = remold_pat_uni(snd(ProjectorCore.shapes(p)), tl, parent_sorts); ([hd, ...remolded], shape, rest); + | Splice(s) => + let (remolded, shape, rest) = + remold_pat_uni(Nib.Shape.Convex, tl, parent_sorts); + ([remold_splice(Pat, s), ...remolded], shape, rest); | Tile(t) => switch (remold_tile(Pat, shape, t)) { | None => ([], shape, seg) @@ -267,6 +282,10 @@ and remold_pat = (shape, seg: t): t => | Secondary(_) | Grout(_) => [hd, ...remold_pat(shape, tl)] | Projector(p) => [hd, ...remold_pat(snd(ProjectorCore.shapes(p)), tl)] + | Splice(s) => [ + remold_splice(Pat, s), + ...remold_pat(Nib.Shape.Convex, tl), + ] | Tile(t) => switch (remold_tile(Pat, shape, t)) { | None => [Tile(t), ...remold_pat(snd(Tile.shapes(t)), tl)] @@ -298,6 +317,10 @@ and remold_tpat_uni = (shape, seg: t, parent_sorts): (t, Nib.Shape.t, t) => let (remolded, shape, rest) = remold_tpat_uni(snd(ProjectorCore.shapes(p)), tl, parent_sorts); ([hd, ...remolded], shape, rest); + | Splice(s) => + let (remolded, shape, rest) = + remold_tpat_uni(Nib.Shape.Convex, tl, parent_sorts); + ([remold_splice(TPat, s), ...remolded], shape, rest); | Tile(t) => switch (remold_tile(TPat, shape, t)) { | None => ([], shape, seg) @@ -327,6 +350,10 @@ and remold_tpat = (shape, seg: t): t => hd, ...remold_tpat(snd(ProjectorCore.shapes(p)), tl), ] + | Splice(s) => [ + remold_splice(TPat, s), + ...remold_tpat(Nib.Shape.Convex, tl), + ] | Tile(t) => switch (remold_tile(TPat, shape, t)) { | None => [Tile(t), ...remold_tpat(snd(Tile.shapes(t)), tl)] @@ -358,6 +385,10 @@ and remold_exp_uni = (shape, seg: t, parent_sorts): (t, Nib.Shape.t, t) => let (remolded, shape, rest) = remold_exp_uni(snd(ProjectorCore.shapes(p)), tl, parent_sorts); ([hd, ...remolded], shape, rest); + | Splice(s) => + let (remolded, shape, rest) = + remold_exp_uni(Nib.Shape.Convex, tl, parent_sorts); + ([remold_splice(Exp, s), ...remolded], shape, rest); | Tile(t) => switch (remold_tile(Exp, shape, t)) { | None => ([], shape, seg) @@ -418,6 +449,10 @@ and remold_rul = (shape, seg: t): t => | Secondary(_) | Grout(_) => [hd, ...remold_rul(shape, tl)] | Projector(p) => [hd, ...remold_rul(snd(ProjectorCore.shapes(p)), tl)] + | Splice(s) => [ + remold_splice(Rul, s), + ...remold_rul(Nib.Shape.Convex, tl), + ] | Tile(t) => switch (remold_tile(Rul, shape, t)) { | Some(t) when !Tile.has_end(Right, t) => @@ -456,6 +491,10 @@ and remold_exp = (shape, seg: t): t => | Secondary(_) | Grout(_) => [hd, ...remold_exp(shape, tl)] | Projector(p) => [hd, ...remold_exp(snd(ProjectorCore.shapes(p)), tl)] + | Splice(s) => [ + remold_splice(Exp, s), + ...remold_exp(Nib.Shape.Convex, tl), + ] | Tile(t) => switch (remold_tile(Exp, shape, t)) { | None => [Tile(t), ...remold_exp(snd(Tile.shapes(t)), tl)] @@ -497,6 +536,10 @@ and remold_mod_uni = (shape, seg: t, parent_sorts): (t, Nib.Shape.t, t) => let (remolded, shape, rest) = remold_mod_uni(snd(ProjectorCore.shapes(p)), tl, parent_sorts); ([hd, ...remolded], shape, rest); + | Splice(s) => + let (remolded, shape, rest) = + remold_mod_uni(Nib.Shape.Convex, tl, parent_sorts); + ([remold_splice(Mod, s), ...remolded], shape, rest); | Tile(t) => switch (remold_tile(Mod, shape, t)) { | None => ([], shape, seg) @@ -547,6 +590,10 @@ and remold_mod = (shape, seg: t): t => | Secondary(_) | Grout(_) => [hd, ...remold_mod(shape, tl)] | Projector(p) => [hd, ...remold_mod(snd(ProjectorCore.shapes(p)), tl)] + | Splice(s) => [ + remold_splice(Mod, s), + ...remold_mod(Nib.Shape.Convex, tl), + ] | Tile(t) => switch (remold_tile(Mod, shape, t)) { | None => @@ -594,6 +641,10 @@ and remold_sig_uni = (shape, seg: t, parent_sorts): (t, Nib.Shape.t, t) => let (remolded, shape, rest) = remold_sig_uni(snd(ProjectorCore.shapes(p)), tl, parent_sorts); ([hd, ...remolded], shape, rest); + | Splice(s) => + let (remolded, shape, rest) = + remold_sig_uni(Nib.Shape.Convex, tl, parent_sorts); + ([remold_splice(Sig, s), ...remolded], shape, rest); | Tile(t) => switch (remold_tile(Sig, shape, t)) { | None => ([], shape, seg) @@ -638,6 +689,10 @@ and remold_sig = (shape, seg: t): t => | Secondary(_) | Grout(_) => [hd, ...remold_sig(shape, tl)] | Projector(p) => [hd, ...remold_sig(snd(ProjectorCore.shapes(p)), tl)] + | Splice(s) => [ + remold_splice(Sig, s), + ...remold_sig(Nib.Shape.Convex, tl), + ] | Tile(t) => switch (remold_tile(Sig, shape, t)) { | None => [Tile(t), ...remold_sig(snd(Tile.shapes(t)), tl)] @@ -674,6 +729,10 @@ and remold_mpat_uni = (shape, seg: t, parent_sorts): (t, Nib.Shape.t, t) => let (remolded, shape, rest) = remold_mpat_uni(snd(ProjectorCore.shapes(p)), tl, parent_sorts); ([hd, ...remolded], shape, rest); + | Splice(s) => + let (remolded, shape, rest) = + remold_mpat_uni(Nib.Shape.Convex, tl, parent_sorts); + ([remold_splice(MPat, s), ...remolded], shape, rest); | Tile(t) => switch (remold_tile(MPat, shape, t)) { | None => ([], shape, seg) @@ -709,6 +768,10 @@ and remold_mpat = (shape, seg: t): t => hd, ...remold_mpat(snd(ProjectorCore.shapes(p)), tl), ] + | Splice(s) => [ + remold_splice(MPat, s), + ...remold_mpat(Nib.Shape.Convex, tl), + ] | Tile(t) => switch (remold_tile(MPat, shape, t)) { | None => [Tile(t), ...remold_mpat(snd(Tile.shapes(t)), tl)] @@ -792,6 +855,8 @@ module Trim = { |> List.concat; }; +let convex_wrapper_inner_shapes = Nib.Shape.(concave(), concave()); + let rec regrout = ((l, r), seg) => { let (trim, r, tl) = regrout_affix(Direction.Right, seg, r); let trim = Trim.regrout((l, r), trim); @@ -810,12 +875,22 @@ and regrout_affix = ProjectorCore.shapes(pr) |> (d == Left ? TupleUtil.swap : Fun.id); let trim = Trim.regrout((r', r), trim); (Trim.empty, l', [p, ...Trim.to_seg(trim)] @ tl); + | Splice(s) => + /* Splice nibs are Convex/Convex from the outside; from the inside + * the content occupies an environment whose left/right boundaries + * face Concave (mirror of the splice's outer Convex shape). Pass + * (concave, concave) so [regrout] adds grouts to make the content's + * ends Convex (matching the splice piece's outer shape). */ + let content = regrout(convex_wrapper_inner_shapes, s.content); + let p = Piece.mk_splice(~id=s.id, content); + let trim = Trim.regrout((Convex, r), trim); + (Trim.empty, Convex, [p, ...Trim.to_seg(trim)] @ tl); | Tile(t) => let children = List.fold_right( (hd, tl) => { let tl = tl; - let hd = regrout(Nib.Shape.(concave(), concave()), hd); + let hd = regrout(convex_wrapper_inner_shapes, hd); [hd, ...tl]; }, t.children, @@ -846,7 +921,7 @@ let split_by_matching = (id: Id.t): (t => Aba.t(t, Tile.t)) => ); let inner_regrout = (children: list(t)): list(t) => - List.map(regrout((Nib.Shape.concave(), Nib.Shape.concave())), children); + List.map(regrout(convex_wrapper_inner_shapes), children); let rec reassemble = (seg: t): t => switch (incomplete_tiles(seg)) { @@ -926,6 +1001,7 @@ let rec holes = (segment: t): list(Grout.t) => fun | Piece.Secondary(_) | Projector(_) => [] + | Splice(s) => holes(s.content) | Tile(t) => List.concat_map(holes, t.children) | Grout(g) => [g], segment, @@ -956,16 +1032,34 @@ let rec ids = (s: t): list(Id.t) => List.concat_map(ids_of_piece, s) and ids_of_piece = (p: Piece.t): list(Id.t) => switch (p) { | Tile(t) => [Piece.id(p), ...ids(List.concat(t.children))] + | Splice(s) => [Piece.id(p), ...ids(s.content)] | Grout(_) | Secondary(_) | Projector(_) => [Piece.id(p)] }; +/* Ids of pieces belonging to this segment's viewport. Recurses into tile + * children (their pieces render in the same viewport) but NOT into + * projector syntax or splice content — those belong to nested viewports + * (the projector's own view, or the splice's inner editor). The + * projector/splice piece's own id is included so outer decorations + * targeting the projector/splice itself still apply. */ +let rec own_ids = (s: t): list(Id.t) => List.concat_map(own_ids_of_piece, s) +and own_ids_of_piece = (p: Piece.t): list(Id.t) => + switch (p) { + | Tile(t) => [Piece.id(p), ...own_ids(List.concat(t.children))] + | Splice(_) + | Projector(_) + | Grout(_) + | Secondary(_) => [Piece.id(p)] + }; + let first_string = fun | [] => "EMPTY" | [Piece.Secondary(w), ..._] => Secondary.get_string(w.content) | [Piece.Projector(_), ..._] => "PROJECTOR" + | [Piece.Splice(_), ..._] => "SPLICE" | [Piece.Grout(_), ..._] => "?" | [Piece.Tile(t), ..._] => t.label |> List.hd; @@ -977,6 +1071,7 @@ let last_string = | Piece.Secondary(w) => Secondary.get_string(w.content) | Piece.Grout(_) => "?" | Piece.Projector(_) => "PROJECTOR" + | Piece.Splice(_) => "SPLICE" | Piece.Tile(t) => t.label |> ListUtil.last }; @@ -1052,14 +1147,17 @@ module IDs = { id, }) | Projector(p) => - /* Need to keep projector and contained piece id in-sync */ - let id = Id.mk(); - let syntax = replace_piece(~id, p.syntax); + let syntax = replace(p.syntax); Projector({ ...p, syntax, id, }); + | Splice(s) => + Splice({ + id, + content: replace(s.content), + }) }; }; @@ -1071,7 +1169,8 @@ module IDs = { | Tile(t) => [id, ...List.concat_map(all, t.children)] | Grout(_) | Secondary(_) => [id] - | Projector(p) => [id, ...all_piece(p.syntax)] + | Projector(p) => [id, ...all(p.syntax)] + | Splice(s) => [id, ...all(s.content)] }; }; }; @@ -1157,8 +1256,10 @@ module SecondaryCollection = { | Piece.Projector({id, syntax, _}) => /* Add secondary for projector and recurse into its content */ let acc = Id.Map.add(id, (before, after), acc); - let inner_seg = Piece.unparenthesize(syntax); - collect_from_seg(inner_seg, acc); + collect_from_seg(syntax, acc); + | Piece.Splice({id, content}) => + let acc = Id.Map.add(id, (before, after), acc); + collect_from_seg(content, acc); | Piece.Grout({id, _}) => Id.Map.add(id, (before, after), acc) | _ => acc }; @@ -1236,10 +1337,10 @@ module SecondaryCollection = { children, ) | Some(Piece.Projector({syntax, _})) => - /* Projectors wrap their content in parentheses. Extract the inner - segment and recursively collect secondary from it. */ - let inner_seg = Piece.unparenthesize(syntax); - collect_from_seg(inner_seg, acc); + /* Recursively collect secondary from the projector's syntax segment. */ + collect_from_seg(syntax, acc) + | Some(Piece.Splice({content, _})) => + collect_from_seg(content, acc) | _ => acc }, acc, diff --git a/src/haz3lcore/zipper/Ancestor.re b/src/haz3lcore/zipper/Ancestor.re index 9cecd8dfe8..acf54c7748 100644 --- a/src/haz3lcore/zipper/Ancestor.re +++ b/src/haz3lcore/zipper/Ancestor.re @@ -5,8 +5,9 @@ exception Empty_shard_affix; [@deriving (show({with_path: false}), sexp, yojson, eq)] type step = int; +/* A Tile-shaped ancestor: the caret is inside one of a tile's children. */ [@deriving (show({with_path: false}), sexp, yojson, eq)] -type t = { +type tile_anc = { [@equal (_, _) => true] id: Id.t, label: Label.t, @@ -15,69 +16,167 @@ type t = { children: (list(Segment.t), list(Segment.t)), }; -// TODO(d) revisit naming w.r.t. outer vs inner shards -let l_shard = a => +/* A Projector-shaped ancestor carries the projector context surrounding + * the splice the caret is currently in. The projector's full syntax is + * recovered by splicing the currently-zipped Splice piece between + * [before] and [after]. Any other pieces of projector.syntax (including + * sibling splices) live in these two segments. */ +[@deriving (show({with_path: false}), sexp, yojson, eq)] +type proj_anc = { + [@equal (_, _) => true] + id: Id.t, + kind: ProjectorCore.Kind.t, + model: string, + before: Segment.t, + after: Segment.t, +}; + +/* A Splice-shaped ancestor: caret is directly inside a splice's content. + * The parent projector context lives in the next-up generation as a + * Projector ancestor. */ +[@deriving (show({with_path: false}), sexp, yojson, eq)] +type splice_anc = { + [@equal (_, _) => true] + id: Id.t, + sort: Sort.t, +}; + +[@deriving (show({with_path: false}), sexp, yojson, eq)] +type t = + | Tile(tile_anc) + | Projector(proj_anc) + | Splice(splice_anc); + +let id: t => Id.t = + fun + | Tile(a) => a.id + | Projector(a) => a.id + | Splice(a) => a.id; + +let is_tile: t => option(tile_anc) = + fun + | Tile(a) => Some(a) + | _ => None; + +let is_projector: t => option(proj_anc) = + fun + | Projector(a) => Some(a) + | _ => None; + +let is_splice: t => option(splice_anc) = + fun + | Splice(a) => Some(a) + | _ => None; + +let l_shard = (a: tile_anc) => ListUtil.hd_opt(fst(a.shards)) |> OptUtil.get_or_raise(Empty_shard_affix); -let r_shard = a => +let r_shard = (a: tile_anc) => ListUtil.last_opt(snd(a.shards)) |> OptUtil.get_or_raise(Empty_shard_affix); -let nibs = (a: t) => { +let tile_nibs = (a: tile_anc) => { let (l, _) = Mold.nibs(~index=l_shard(a), a.mold); let (_, r) = Mold.nibs(~index=r_shard(a), a.mold); (l, r); }; -let zip = (child: Segment.t, {id, label, mold, shards, children}: t): Tile.t => { - id, - label, - mold, - shards: fst(shards) @ snd(shards), - children: fst(children) @ [child, ...snd(children)], -}; +let nibs = (a: t): (Nib.t, Nib.t) => + switch (a) { + | Tile(a) => tile_nibs(a) + | Projector(_) + | Splice(_) => + /* Projector and Splice ancestors are opaque Convex/Convex. */ + Nib.( + { + shape: Convex, + sort: Any, + }, + { + shape: Convex, + sort: Any, + }, + ) + }; -let sort = (a: t): Sort.t => { - let (pre, suf) = a.shards; - switch (ListUtil.split_last_opt(pre), suf) { - | (Some((_, i)), [j, ..._]) => - let (_, l) = Mold.nibs(~index=i, a.mold); - let (r, _) = Mold.nibs(~index=j, a.mold); - l.sort == r.sort ? l.sort : Any; - | _ => raise(Empty_shard_affix) +/* Zip a child segment back up into the parent piece. + * - Tile: wrap child in the tile at the caret position. + * - Splice: produce a Splice piece whose content is the child. + * - Projector: produce a Projector piece whose syntax is before ++ child ++ after. + * (This is used when zipping a Projector frame whose child is the already- + * zipped Splice segment; [before]/[after] surround it in projector syntax.) */ +let zip = (child: Segment.t, a: t): Base.piece => + switch (a) { + | Tile({id, label, mold, shards, children}) => + Base.Tile({ + id, + label, + mold, + shards: fst(shards) @ snd(shards), + children: fst(children) @ [child, ...snd(children)], + }) + | Splice({id, _}) => Piece.mk_splice(~id, child) + | Projector({id, kind, model, before, after}) => + Base.Projector( + ProjectorCore.mk(~id, kind, before @ child @ after, model), + ) }; -}; -let disassemble = - ({id, label, mold, shards, children: (kids_l, kids_r)}: t): Siblings.t => { - let (shards_l, shards_r) = - shards - |> TupleUtil.map2(Tile.split_shards(id, label, mold)) - |> TupleUtil.map2(List.map(Tile.to_piece)); - let flatten = (shards, kids) => - Aba.mk(shards, kids) |> Aba.join(p => [p], Fun.id) |> List.flatten; - (flatten(shards_l, kids_l), flatten(shards_r, kids_r)); -}; +let sort = (a: t): Sort.t => + switch (a) { + | Tile(a) => + let (pre, suf) = a.shards; + switch (ListUtil.split_last_opt(pre), suf) { + | (Some((_, i)), [j, ..._]) => + let (_, l) = Mold.nibs(~index=i, a.mold); + let (r, _) = Mold.nibs(~index=j, a.mold); + l.sort == r.sort ? l.sort : Any; + | _ => raise(Empty_shard_affix) + }; + | Projector(_) => Sort.Any + | Splice({sort, _}) => sort + }; -let missing_middle_shards = (a: t): list(Tile.t) => { - let (shards_l, shards_r) = a.shards; - let last_l = - ListUtil.last_opt(shards_l) |> OptUtil.get_or_raise(Empty_shard_affix); - let first_r = - ListUtil.hd_opt(shards_r) |> OptUtil.get_or_raise(Empty_shard_affix); - let ls = List.init(first_r - last_l - 1, i => last_l + i + 1); - Tile.split_shards(a.id, a.label, a.mold, ls); -}; +/* Disassemble returns the siblings this ancestor contributes when its + * "shards" are broken back into pieces. For tiles this splits shards/kids + * into two segments. For Projector/Splice ancestors there is nothing to + * disassemble — the caret can only enter/exit them atomically — so we + * return empty siblings. */ +let disassemble = (a: t): Siblings.t => + switch (a) { + | Tile({id, label, mold, shards, children: (kids_l, kids_r)}) => + let (shards_l, shards_r) = + shards + |> TupleUtil.map2(Tile.split_shards(id, label, mold)) + |> TupleUtil.map2(List.map(Tile.to_piece)); + let flatten = (shards, kids) => + Aba.mk(shards, kids) |> Aba.join(p => [p], Fun.id) |> List.flatten; + (flatten(shards_l, kids_l), flatten(shards_r, kids_r)); + | Projector(_) + | Splice(_) => (Segment.empty, Segment.empty) + }; + +let missing_middle_shards = (a: t): list(Tile.t) => + switch (a) { + | Tile(a) => + let (shards_l, shards_r) = a.shards; + let last_l = + ListUtil.last_opt(shards_l) |> OptUtil.get_or_raise(Empty_shard_affix); + let first_r = + ListUtil.hd_opt(shards_r) |> OptUtil.get_or_raise(Empty_shard_affix); + let ls = List.init(first_r - last_l - 1, i => last_l + i + 1); + Tile.split_shards(a.id, a.label, a.mold, ls); + | Projector(_) + | Splice(_) => [] + }; let reassemble = (match_l: Aba.t(Tile.t, Segment.t) as 'm, match_r: 'm): t => { - // TODO(d) bit hacky, need to do a flip/orientation pass - // let match_l = Aba.map_b(Segment.rev, match_l); let (t_l, t_r) = Tile.(reassemble(match_l), reassemble(match_r)); assert(t_l.id == t_r.id); - { + Tile({ id: t_l.id, label: t_l.label, mold: t_l.mold, shards: (t_l.shards, t_r.shards), children: (t_l.children, t_r.children), - }; + }); }; diff --git a/src/haz3lcore/zipper/Ancestors.re b/src/haz3lcore/zipper/Ancestors.re index 9359e189b4..ffa4255fe8 100644 --- a/src/haz3lcore/zipper/Ancestors.re +++ b/src/haz3lcore/zipper/Ancestors.re @@ -19,7 +19,8 @@ let sort = | [(a, _), ..._] => Ancestor.sort(a); let zip_gen = (seg: Segment.t, (a, (pre, suf)): generation): Segment.t => - pre @ [Piece.Tile(Ancestor.zip(seg, a)), ...suf]; + pre @ [Ancestor.zip(seg, a), ...suf]; + let zip = (seg: Segment.t, ancs: t) => ancs |> List.fold_left(zip_gen, seg); let regrout = (ancs: t) => diff --git a/src/haz3lcore/zipper/Refractors.re b/src/haz3lcore/zipper/Refractors.re index f1cbddf067..53c4ad7368 100644 --- a/src/haz3lcore/zipper/Refractors.re +++ b/src/haz3lcore/zipper/Refractors.re @@ -87,9 +87,9 @@ let for_serialization = (refractors: t): t => { * When the full Base.projector is needed for rendering, use `to_projector`. */ let mk_entry = (kind: ProjectorCore.Kind.t): entry => { let (module P) = ProjectorInit.to_module(kind); - let model = + let (model, _) = /* Create dummy syntax just to get the initial model string */ - P.init(Exp(Language.IdTagged.FreshGrammar.Exp.tuple([]))) + P.init(Exp(Language.IdTagged.FreshGrammar.Exp.tuple([])), []) |> OptUtil.get_or_fail("Refractor.mk_entry"); { kind, @@ -104,9 +104,11 @@ let to_projector = (id: Id.t, entry: entry): Base.projector => ProjectorCore.mk( ~id, entry.kind, - Base.Secondary({ - id: Id.invalid, - content: Whitespace(""), - }), + [ + Base.Secondary({ + id: Id.invalid, + content: Whitespace(""), + }), + ], entry.model, ); diff --git a/src/haz3lcore/zipper/Relatives.re b/src/haz3lcore/zipper/Relatives.re index 19394d5010..4f8b878c39 100644 --- a/src/haz3lcore/zipper/Relatives.re +++ b/src/haz3lcore/zipper/Relatives.re @@ -24,6 +24,272 @@ let prepend = (d: Direction.t, seg: Segment.t, rs: t): t => { }; }; +/* Walk a segment in direction [d], looking for the first Splice piece + * (in document order along [d]) for which [pred] returns true. Recurses + * into Tile children, but does NOT recurse into nested Projector pieces. + * + * If found, returns: + * - [ancs]: ancestor frames to push onto the stack (innermost first), + * consisting of one Splice frame plus zero or more Tile frames + * describing the path from the outermost containing piece in [seg] + * down to the matched splice. The OUTERMOST frame's gen_sibs is + * stubbed to (Segment.empty, Segment.empty); the caller is expected + * to use the returned [outer_left]/[outer_right] for the surrounding + * Projector ancestor's [before]/[after] fields. + * - [splice_sibs]: siblings to seed inside the splice, with the caret + * at the entry edge for direction [d] (left edge for Right, right + * edge for Left). + * - [splice]: the matched splice piece. + * - [outer_left]/[outer_right]: pieces in [seg] adjacent to the + * outermost descent piece (in natural left-to-right order). + * + * Stateful predicates are supported: [pred] is invoked on splices in + * document order along [d], including for splices that don't end up + * being chosen (e.g. ones inside tile children we end up not descending + * through because no match was found). */ +let rec find_splice_descent_when = + ( + ~sort: Sort.t=Sort.Any, + d: Direction.t, + pred: Base.splice => bool, + seg: Segment.t, + ) + : option( + (Ancestors.t, Siblings.t, Base.splice, Segment.t, Segment.t), + ) => { + let pieces_in_d_order = + switch (d) { + | Right => seg + | Left => List.rev(seg) + }; + let split_at_current = (acc: list(Piece.t), rest: list(Piece.t)) => + /* [acc] holds pieces visited so far in scan order (newest first); + * [rest] holds the remaining pieces in scan order. Compute the + * (left, right) partition in seg's natural order. */ + switch (d) { + | Right => (List.rev(acc), rest) + | Left => (List.rev(rest), acc) + }; + let splice_inner_sibs = (s: Base.splice): Siblings.t => + switch (d) { + | Right => (Segment.empty, s.content) + | Left => (s.content, Segment.empty) + }; + let rec scan = (acc: list(Piece.t), rest: list(Piece.t)) => + switch (rest) { + | [] => None + | [Base.Splice(s) as p, ...rest_pieces] => + if (pred(s)) { + let (before, after) = split_at_current(acc, rest_pieces); + let splice_anc: Ancestor.splice_anc = { + id: s.id, + sort, + }; + let ancs = [ + (Ancestor.Splice(splice_anc), (Segment.empty, Segment.empty)), + ]; + Some((ancs, splice_inner_sibs(s), s, before, after)); + } else { + scan([p, ...acc], rest_pieces); + } + | [Base.Tile(t) as p, ...rest_pieces] => + let n_kids = List.length(t.children); + let kid_indices = + switch (d) { + | Right => List.init(n_kids, i => i) + | Left => List.init(n_kids, i => n_kids - 1 - i) + }; + let rec try_kids = idx_list => + switch (idx_list) { + | [] => None + | [i, ...rest_idx] => + let child = List.nth(t.children, i); + let child_sort = + i < List.length(t.mold.in_) ? List.nth(t.mold.in_, i) : Sort.Any; + switch (find_splice_descent_when(~sort=child_sort, d, pred, child)) { + | None => try_kids(rest_idx) + | Some((sub_ancs, sub_sibs, sub_splice, child_l, child_r)) => + let (shards_l, shards_r) = ListUtil.split_n(i + 1, t.shards); + let (kids_l, kids_after_active) = + ListUtil.split_n(i, t.children); + let kids_r = + switch (kids_after_active) { + | [] => [] + | [_active, ...rest_kids] => rest_kids + }; + let tile_anc: Ancestor.tile_anc = { + id: t.id, + label: t.label, + mold: t.mold, + shards: (shards_l, shards_r), + children: (kids_l, kids_r), + }; + let (before, after) = split_at_current(acc, rest_pieces); + /* Promote the recursive call's outermost frame to an + * "interior" frame: assign it the proper gen_sibs (the + * pieces in this tile's active child segment around the + * descent path). Then add this tile's frame on top of it, + * with stubbed gen_sibs of (empty, empty); our caller will + * fix our outermost frame's gen_sibs in turn. */ + let sub_ancs_fixed = + switch (List.rev(sub_ancs)) { + | [] => sub_ancs + | [(outermost_anc, _), ...rest_rev] => + List.rev([(outermost_anc, (child_l, child_r)), ...rest_rev]) + }; + let tile_frame = ( + Ancestor.Tile(tile_anc), + (Segment.empty, Segment.empty), + ); + let ancs = sub_ancs_fixed @ [tile_frame]; + Some((ancs, sub_sibs, sub_splice, before, after)); + }; + }; + switch (try_kids(kid_indices)) { + | Some(_) as r => r + | None => scan([p, ...acc], rest_pieces) + }; + | [p, ...rest_pieces] => scan([p, ...acc], rest_pieces) + }; + scan([], pieces_in_d_order); +}; + +/* Find the first splice in [seg] in direction [d] (recursing into + * Tile children). Convenience wrapper around [find_splice_descent_when] + * with a constant-true predicate. */ +let find_splice_descent = + (d: Direction.t, seg: Segment.t) + : option((Ancestors.t, Siblings.t, Base.splice, Segment.t, Segment.t)) => + find_splice_descent_when(d, _ => true, seg); + +/* Enter a projector from outside: pushes a Projector frame plus zero or + * more Tile frames plus a Splice frame onto the ancestors stack, and + * seeds the caret inside the leftmost splice (if moving right) or + * rightmost splice (if moving left). Splices nested arbitrarily deep + * inside tile children of [pr.syntax] are supported. Returns None if + * the projector has no splices — in that case the caller should fall + * back to treating the projector as an ordinary piece. */ +let enter_projector = + ( + d: Direction.t, + pr: Base.projector, + outer_sibs: Siblings.t, + ancestors: Ancestors.t, + ) + : option(t) => + switch (find_splice_descent(d, pr.syntax)) { + | None => None + | Some((descent_ancs, splice_sibs, _splice, outer_left, outer_right)) => + let proj_anc: Ancestor.proj_anc = { + id: pr.id, + kind: pr.kind, + model: pr.model, + before: outer_left, + after: outer_right, + }; + Some({ + siblings: splice_sibs, + ancestors: + descent_ancs + @ [(Ancestor.Projector(proj_anc), outer_sibs), ...ancestors], + }); + }; + +let enter_splice = + ( + d: Direction.t, + sp: Base.splice, + ~sort: Sort.t=Sort.Any, + outer_sibs: Siblings.t, + ancestors: Ancestors.t, + ) + : t => { + let splice_anc: Ancestor.splice_anc = { + id: sp.id, + sort, + }; + let splice_inner_sibs: Siblings.t = + switch (d) { + | Right => (Segment.empty, sp.content) + | Left => (sp.content, Segment.empty) + }; + { + siblings: splice_inner_sibs, + ancestors: [(Ancestor.Splice(splice_anc), outer_sibs), ...ancestors], + }; +}; + +let exit_splice = (d: Direction.t, rs: t): option(t) => { + switch (rs.ancestors) { + | [(Ancestor.Splice(sp), splice_gen_sibs), ...rest_ancs] => + let zipped_splice = + Piece.mk_splice(~id=sp.id, fst(rs.siblings) @ snd(rs.siblings)); + let splice_active_seg = + fst(splice_gen_sibs) @ [zipped_splice, ...snd(splice_gen_sibs)]; + let rec walk_to_projector = (active_seg: Segment.t, ancs: Ancestors.t) => + switch (ancs) { + | [(Ancestor.Tile(tile_anc), tile_gen_sibs), ...rest] => + let zipped_tile = Ancestor.zip(active_seg, Ancestor.Tile(tile_anc)); + let new_seg = + fst(tile_gen_sibs) @ [zipped_tile, ...snd(tile_gen_sibs)]; + walk_to_projector(new_seg, rest); + | [(Ancestor.Projector(pr_anc), outer_sibs), ...rest] => + Some((active_seg, pr_anc, outer_sibs, rest)) + | _ => None + }; + switch (walk_to_projector(splice_active_seg, rest_ancs)) { + | None => None + | Some((pr_active_subtree, pr_anc, outer_sibs, after_proj)) => + let pr_full_syntax = pr_anc.before @ pr_active_subtree @ pr_anc.after; + let passed = ref(false); + let pred = (s: Base.splice) => + if (passed^) { + true; + } else if (Id.equal(s.id, sp.id)) { + passed := true; + false; + } else { + false; + }; + switch (find_splice_descent_when(d, pred, pr_full_syntax)) { + | Some((descent_ancs, splice_sibs, _next, outer_l, outer_r)) => + let new_pr_anc: Ancestor.proj_anc = { + ...pr_anc, + before: outer_l, + after: outer_r, + }; + Some({ + siblings: splice_sibs, + ancestors: + descent_ancs + @ [(Ancestor.Projector(new_pr_anc), outer_sibs), ...after_proj], + }); + | None => + let projector_piece = + Base.Projector( + ProjectorCore.mk( + ~id=pr_anc.id, + pr_anc.kind, + pr_full_syntax, + pr_anc.model, + ), + ); + Some({ + siblings: + Siblings.push(Direction.toggle(d), projector_piece, outer_sibs), + ancestors: after_proj, + }); + }; + }; + | _ => None + }; +}; + +/* Core pop: attempts to take a piece in direction [d] from siblings; if + * siblings are exhausted, pops one ordinary tile ancestor frame and retries. + * Projector/splice entry and exit are handled explicitly by Move.re; keeping + * them out of core pop prevents hidden movement that also consumes an inner + * token. */ let pop = (d: Direction.t, rs: t): option((Piece.t, t)) => switch (Siblings.pop(d, rs.siblings)) { | Some((p, siblings)) => @@ -37,6 +303,7 @@ let pop = (d: Direction.t, rs: t): option((Piece.t, t)) => | None => switch (rs.ancestors) { | [] => None + | [(Ancestor.Splice(_) | Projector(_), _), ..._] => None | [(ancestor, siblings), ...ancestors] => open OptUtil.Syntax; let siblings' = Ancestor.disassemble(ancestor); @@ -65,7 +332,7 @@ let parent = : option(Piece.t) => ancestors |> Ancestors.parent - |> Option.map(p => Base.Tile(Ancestor.zip(l_sibs @ sel @ r_sibs, p))); + |> Option.map(p => Ancestor.zip(l_sibs @ sel @ r_sibs, p)); let delete_parent = ({siblings, ancestors}: t): t => { switch (ancestors) { @@ -156,6 +423,22 @@ let regrout = (d: Direction.t, {siblings, ancestors}: t): t => { }; (pre @ trim_l, trim_r @ suf); }; + let siblings = + switch (ancestors) { + | [(Ancestor.Splice(_), _), ..._] => + /* Inside splice editors, the content's outer shape should be + * Convex/Convex (matching the surrounding Splice piece's nibs). + * The (l, r) passed to [regrout] is the *environment* shape, so + * we pass (Concave, Concave) — meaning the splice's inside acts + * like the inside of a Convex/Convex tile, just as tile children + * are regrouted with (concave, concave). */ + let pre_len = List.length(fst(siblings)); + siblings + |> Siblings.zip + |> Segment.regrout(Nib.Shape.(concave(), concave())) + |> Siblings.unzip(pre_len); + | _ => siblings + }; { siblings, ancestors, @@ -165,7 +448,10 @@ let regrout = (d: Direction.t, {siblings, ancestors}: t): t => { let reassemble_parent = (rs: t): t => switch (rs.ancestors) { | [] => rs - | [(a, sibs), ...ancs] => + | [(Ancestor.Projector(_) | Splice(_), _), ..._] => + /* Projector and Splice ancestors have no shards to reassemble. */ + rs + | [(Tile(a), sibs), ...ancs] => let (l, r) = rs.siblings |> Siblings.split_by_matching(a.id) @@ -181,7 +467,7 @@ let reassemble_parent = (rs: t): t => | None => (a, fst(rs.siblings)) | Some((outer_l, match_l, inner_l)) => let (shards_l, kids_l) = flatten_match(match_l); - let a = { + let a: Ancestor.tile_anc = { ...a, shards: a.shards |> PairUtil.map_fst(ss => ss @ shards_l), children: @@ -197,7 +483,7 @@ let reassemble_parent = (rs: t): t => | None => (a, snd(rs.siblings)) | Some((inner_r, match_r, outer_r)) => let (shards_r, kids_r) = flatten_match(match_r); - let a = { + let a: Ancestor.tile_anc = { ...a, shards: a.shards |> PairUtil.map_snd(ss => shards_r @ ss), children: @@ -210,7 +496,7 @@ let reassemble_parent = (rs: t): t => }; { siblings: (l, r), - ancestors: [(a, sibs), ...ancs], + ancestors: [(Ancestor.Tile(a), sibs), ...ancs], }; }; diff --git a/src/haz3lcore/zipper/Zipper.re b/src/haz3lcore/zipper/Zipper.re index e34083399d..17ec4c4037 100644 --- a/src/haz3lcore/zipper/Zipper.re +++ b/src/haz3lcore/zipper/Zipper.re @@ -23,6 +23,20 @@ let init: unit => t = let next_blank = _ => Id.mk(); +/* Id of the innermost Splice ancestor of the caret, if any. + * Returns [None] when the caret is not inside any splice. Used by + * rendering code to decide which viewport should draw the caret and + * splice-local decorations. */ +let splice_context = (z: t): option(Id.t) => + List.find_map( + ((a, _): Ancestors.generation) => + switch (a) { + | Ancestor.Splice({id, _}) => Some(id) + | _ => None + }, + z.relatives.ancestors, + ); + let delete_parent = (z: t): t => { ...z, relatives: Relatives.delete_parent(z.relatives), @@ -456,7 +470,8 @@ module Caret = { * For non-tiles and monotiles this is always zero */ let delim_idx = (z: t) => switch (snd(z.relatives.siblings), z.relatives.ancestors) { - | ([], [({shards: (l, _), _}, _), ..._]) => List.length(l) + | ([], [(Ancestor.Tile({shards: (l, _), _}), _), ..._]) => + List.length(l) | _ => 0 }; diff --git a/src/haz3lcore/zipper/ZipperBase.re b/src/haz3lcore/zipper/ZipperBase.re index 53f985a7c3..ee001570c9 100644 --- a/src/haz3lcore/zipper/ZipperBase.re +++ b/src/haz3lcore/zipper/ZipperBase.re @@ -97,6 +97,7 @@ module MapPiece = { | Tile(t) => Tile(of_tile(f, t)) | Grout(_) | Projector(_) + | Splice(_) | Secondary(_) => piece }; } @@ -112,15 +113,24 @@ module MapPiece = { of_segment(f, snd(sibs)), ); - let of_ancestor = (f: updater, ancestor: Ancestor.t): Ancestor.t => { - { - ...ancestor, - children: ( - List.map(of_segment(f), fst(ancestor.children)), - List.map(of_segment(f), snd(ancestor.children)), - ), + let of_ancestor = (f: updater, ancestor: Ancestor.t): Ancestor.t => + switch (ancestor) { + | Tile(a) => + Ancestor.Tile({ + ...a, + children: ( + List.map(of_segment(f), fst(a.children)), + List.map(of_segment(f), snd(a.children)), + ), + }) + | Projector(a) => + Ancestor.Projector({ + ...a, + before: of_segment(f, a.before), + after: of_segment(f, a.after), + }) + | Splice(_) => ancestor }; - }; let of_generation = (f: updater, generation: Ancestors.generation): Ancestors.generation => ( diff --git a/src/haz3lcore/zipper/action/Action.re b/src/haz3lcore/zipper/action/Action.re index 94cf3126a9..ddd57af4b8 100644 --- a/src/haz3lcore/zipper/action/Action.re +++ b/src/haz3lcore/zipper/action/Action.re @@ -25,6 +25,7 @@ type move = | Local(Direction.t, chunkiness) | Vertical(vertical) | Point(Point.t) + | SplicePoint((int, int), Point.t) | Goal(goal); [@deriving (show({with_path: false}), sexp, yojson, eq)] @@ -63,7 +64,7 @@ type project = | SampleCursor(sample_cursor) | SetIndicated(chooser) /* Project syntax at caret */ | RemoveIndicated /* Remove projector at caret */ - | SetSyntax(int, Base.segment) /* Set underlying syntax */ + | SetSyntax(int, Language.Any.t, bool) /* Set underlying syntax, optionally preserving original splices */ | SetModel(int, ProjectorCore.Kind.t, string) /* Set serialized model (projector or refractor) */ | Focus(int, ProjectorCore.Kind.t, option(Util.Direction.t)) /* Pass control to projector */ | Escape(int, Direction.t); /* Pass control to parent editor */ diff --git a/src/haz3lcore/zipper/action/Indicated.re b/src/haz3lcore/zipper/action/Indicated.re index 020aabd93b..251ab57ca7 100644 --- a/src/haz3lcore/zipper/action/Indicated.re +++ b/src/haz3lcore/zipper/action/Indicated.re @@ -64,18 +64,23 @@ let shard_index = (z: ZipperBase.t): option(int) => | Parent => switch (Ancestors.parent(z.relatives.ancestors)) { | None => failwith("indicated_shard_index impossible") - | Some({children: (before, _), _}) => + | Some(Tile({children: (before, _), _})) => let before = List.length(before); switch (Siblings.neighbors(z.relatives.siblings)) { | (_, None) => Some(before + 1) | _ => Some(before) }; + | Some(Projector(_) | Splice(_)) => + /* Splice / Projector parents have no shard-index notion; treat + * them as a single boundary. */ + Some(0) } | Sibling => switch (p) { | Secondary(_) | Grout(_) - | Projector(_) => Some(0) + | Projector(_) + | Splice(_) => Some(0) | Tile(t) => switch (side) { | Left => Some(List.length(t.children)) diff --git a/src/haz3lcore/zipper/action/Insert.re b/src/haz3lcore/zipper/action/Insert.re index 559b9b187a..98672a7775 100644 --- a/src/haz3lcore/zipper/action/Insert.re +++ b/src/haz3lcore/zipper/action/Insert.re @@ -19,7 +19,7 @@ let expansion = (sort: Sort.t, t: Token.t, z: t): (Label.t, Direction.t) => { ); let inside_case = (z: t): bool => switch (Ancestors.parent(z.relatives.ancestors)) { - | Some({label: ["case", "end"], _}) => true + | Some(Tile({label: ["case", "end"], _})) => true | _ => false }; switch (t) { diff --git a/src/haz3lcore/zipper/action/Introduce.re b/src/haz3lcore/zipper/action/Introduce.re index 87382b3305..5ebedf2cda 100644 --- a/src/haz3lcore/zipper/action/Introduce.re +++ b/src/haz3lcore/zipper/action/Introduce.re @@ -211,8 +211,12 @@ module Make = let already_parenthesized = (z: Zipper.t) => { let sibs = Siblings.trim_secondary(ZipperBase.sibs_with_sel(z)); - let parent = Ancestors.parent(z.relatives.ancestors); - Option.map((p: Ancestor.t) => p.label, parent) == Some(["(", ")"]) + let parent_label = + switch (Ancestors.parent(z.relatives.ancestors)) { + | Some(Ancestor.Tile(a)) => Some(a.label) + | _ => None + }; + parent_label == Some(["(", ")"]) && sibs |> (((l, r)) => l @ r) |> List.length(_) == 1; diff --git a/src/haz3lcore/zipper/action/Move.re b/src/haz3lcore/zipper/action/Move.re index 5dafcbe096..3aa9fa2d66 100644 --- a/src/haz3lcore/zipper/action/Move.re +++ b/src/haz3lcore/zipper/action/Move.re @@ -2,10 +2,58 @@ open Util; open OptUtil.Syntax; open Zipper; +let enter_neighbor = (d: Direction.t, z: t): option(t) => { + switch (z.caret, Selection.is_empty(z.selection)) { + | (Outer, true) => + switch (Siblings.pop(d, z.relatives.siblings)) { + | Some((Projector(pr), siblings)) => + let+ relatives = + Relatives.enter_projector(d, pr, siblings, z.relatives.ancestors); + { + ...z, + relatives, + }; + | Some((Splice(sp), siblings)) => + Some({ + ...z, + relatives: + Relatives.enter_splice( + d, + sp, + ~sort=Relatives.sort(z.relatives), + siblings, + z.relatives.ancestors, + ), + }) + | _ => None + } + | _ => None + }; +}; + +let exit_current_splice = (d: Direction.t, z: t): option(t) => { + let+ relatives = Relatives.exit_splice(d, z.relatives); + { + ...z, + relatives: Relatives.reassemble(relatives), + }; +}; + +let structural_move = (d: Direction.t, z: t): option(t) => + switch (enter_neighbor(d, z)) { + | Some(_) as entered => entered + | None => + switch (move(d, z)) { + | Some(_) as moved => moved + | None => exit_current_splice(d, z) + } + }; + let by_char_left = (z: t): option(t) => switch (z.caret, Caret.nhbr_max_idx(Left, z)) { - | (Outer, None) => move(Left, z) - | (Outer, Some(max_idx)) => z |> Caret.set(Inner(max_idx)) |> move(Left) + | (Outer, None) => structural_move(Left, z) + | (Outer, Some(max_idx)) => + z |> Caret.set(Inner(max_idx)) |> structural_move(Left) | (Inner(char), None | Some(_)) when char == 0 => z |> Caret.set(Outer) |> Option.some | (Inner(char), None | Some(_)) => @@ -14,10 +62,10 @@ let by_char_left = (z: t): option(t) => let by_char_right = (z: t): option(t) => switch (z.caret, Caret.nhbr_max_idx(Right, z)) { - | (Outer, None) => move(Right, z) + | (Outer, None) => structural_move(Right, z) | (Outer, Some(_)) => z |> Caret.set(Inner(0)) |> Option.some | (Inner(char), Some(max_idx)) when char == max_idx => - z |> Caret.set(Outer) |> move(Right) + z |> Caret.set(Outer) |> structural_move(Right) | (Inner(char), None | Some(_)) => z |> Caret.set(Inner(char + 1)) |> Option.some }; @@ -30,12 +78,12 @@ let by_char = (d: Direction.t, z: t): option(t) => let by_token = (d: Direction.t, z: t): option(t) => switch (z.caret) { - | Outer => move(d, z) + | Outer => structural_move(d, z) | Inner(_) => let z = Caret.set(Outer, z); switch (d) { | Left => Some(z) - | Right => move(Right, z) + | Right => structural_move(Right, z) }; }; @@ -113,11 +161,158 @@ let vertical = do_towards_point(~force_progress=true, ~measured, local(ByChar), goal, z); }; -let to_point = (~measured: Measured.t, ~goal: Point.t, z: t): option(t) => +/* If [goal] falls inside one of [measured]'s splice regions via the + * provided [splice_offsets] map (origin of each splice on screen), this + * returns the translated goal and the splice id to enter. Otherwise + * None, meaning the goal should be resolved against top-level measured. + * + * NOTE: the splice_offsets map is currently not populated from the DOM; + * returning None here means clicks are always resolved against the + * top-level coordinate frame. Keyboard/arrow entry into splices is + * handled separately via Relatives.pop. When the view pipeline starts + * publishing splice offsets, this hook will enable direct splice + * clicks to translate the goal point into splice-local coordinates. */ +let splice_at_point = + ( + ~splice_offsets: Id.Map.t(Point.t)=Id.Map.empty, + ~measured: Measured.t, + goal: Point.t, + ) + : option((Id.t, Point.t)) => { + ignore(measured); + Id.Map.fold( + (id, offset: Point.t, acc) => + switch (acc) { + | Some(_) => acc + | None => + /* A splice's bounding box is recorded in [measured.splices]. + * Check if [goal] falls within [offset, offset + size]. */ + switch (Id.Map.find_opt(id, measured.splices)) { + | None => None + | Some(info) => + let contains = + goal.row >= offset.row + && goal.row <= offset.row + + info.size.row + && goal.col >= offset.col + && goal.col <= offset.col + + info.size.col; + contains + ? Some(( + id, + Point.{ + row: goal.row - offset.row, + col: goal.col - offset.col, + }, + )) + : None; + } + }, + splice_offsets, + None, + ); +}; + +let to_point = (~measured: Measured.t, ~goal: Point.t, z: t): option(t) => { + /* If [goal] is inside a splice's on-screen box, translate to splice- + * local coords and resolve there. Otherwise resolve against the top- + * level measured grid. */ + let _ = splice_at_point(~measured, goal); switch (do_towards_point(~measured, local(ByChar), goal, z)) { | None => Some(z) | Some(z) => Some(z) }; +}; + +let rec collect_splices = (seg: Base.segment): list(Base.splice) => + List.concat_map( + (p: Base.piece) => + switch (p) { + | Splice(s) => [s, ...collect_splices(s.content)] + | Tile(t) => List.concat_map(collect_splices, t.children) + | Projector(_) + | Grout(_) + | Secondary(_) => [] + }, + seg, + ); + +let nth_opt = (xs: list('a), i: int): option('a) => + i < 0 + ? None + : ( + try(Some(List.nth(xs, i))) { + | _ => None + } + ); + +let split_projector = + (~projector_id: Id.t, seg: Base.segment) + : option((Segment.t, Base.projector, Segment.t)) => { + let rec scan = (pre: Segment.t, rest: Segment.t) => + switch (rest) { + | [] => None + | [Projector(pr), ...suf] when pr.id == projector_id => + Some((List.rev(pre), pr, suf)) + | [p, ...suf] => scan([p, ...pre], suf) + }; + scan([], seg); +}; + +let enter_splice_path = + ( + ~projector_list: list(Id.t), + ~projectors: Id.Map.t(Base.projector), + ~path: (int, int), + z: t, + ) + : option(t) => { + let (projector_idx, splice_idx) = path; + let* projector_id = nth_opt(projector_list, projector_idx); + let* cached_projector = Id.Map.find_opt(projector_id, projectors); + let* target_splice = + nth_opt(collect_splices(cached_projector.syntax), splice_idx); + let full_segment = Zipper.unselect_and_zip(z); + let* (outer_left, projector, outer_right) = + split_projector(~projector_id, full_segment); + let pred = (s: Base.splice) => s.id == target_splice.id; + let* (descent_ancs, splice_sibs, _splice, before, after) = + Relatives.find_splice_descent_when(Right, pred, projector.syntax); + let proj_anc: Ancestor.proj_anc = { + id: projector.id, + kind: projector.kind, + model: projector.model, + before, + after, + }; + Some({ + ...z, + caret: Outer, + relatives: { + siblings: splice_sibs, + ancestors: + descent_ancs + @ [(Ancestor.Projector(proj_anc), (outer_left, outer_right))], + }, + }); +}; + +let to_splice_point = + ( + ~measured: Measured.t, + ~projector_list: list(Id.t), + ~projectors: Id.Map.t(Base.projector), + ~path: (int, int), + ~goal: Point.t, + z: t, + ) + : option(t) => { + let* z = enter_splice_path(~projector_list, ~projectors, ~path, z); + switch (do_towards_point(~measured, local(ByChar), goal, z)) { + | None => Some(z) + | Some(z) => Some(z) + }; +}; let to_start: t => t = do_to_extreme(local(ByToken, Left)); @@ -181,6 +376,8 @@ let move_dispatch = ~problem_ids: Seq.t(Id.t), ~col_target: int, ~measured: Measured.t, + ~projector_list: list(Id.t), + ~projectors: Id.Map.t(Base.projector), d: Action.move, z: t, ) @@ -192,6 +389,8 @@ let move_dispatch = | Line(d) => to_linebreak(d, z) | Vertical(d) => vertical(~measured, ~col_target, d, z) | Point(goal) => to_point(~measured, ~goal, z) + | SplicePoint(path, goal) => + to_splice_point(~measured, ~projector_list, ~projectors, ~path, ~goal, z) | Goal(Hole(d)) => to_next_grout(d, z) | Goal(NextProblem(d)) => to_next_problem(~measured, ~problem_ids, d, z) | Goal(TileId(id)) => jump_to_id_indicated(z, id) @@ -211,6 +410,7 @@ let pre_unselect = (a: Action.move, z: t): t => { | End | Line(_) | Point(_) + | SplicePoint(_, _) | Goal(_) => z.selection.focus }; Zipper.directional_unselect(d, z); @@ -221,12 +421,23 @@ let go = ~problem_ids: Seq.t(Id.t), ~col_target: int, ~measured: Measured.t, + ~projector_list: list(Id.t), + ~projectors: Id.Map.t(Base.projector), a: Action.move, z: t, ) : option(t) => if (Selection.is_empty(z.selection)) { - move_dispatch(~statics, ~problem_ids, ~col_target, ~measured, a, z); + move_dispatch( + ~statics, + ~problem_ids, + ~col_target, + ~measured, + ~projector_list, + ~projectors, + a, + z, + ); } else { let z = pre_unselect(a, z); switch (a) { @@ -235,7 +446,16 @@ let go = | Local(Right, ByChar) => Some(z) | _ => switch ( - move_dispatch(~statics, ~problem_ids, ~col_target, ~measured, a, z) + move_dispatch( + ~statics, + ~problem_ids, + ~col_target, + ~measured, + ~projector_list, + ~projectors, + a, + z, + ) ) { | Some(z) => Some(z) /* Always empty selection on move action, diff --git a/src/haz3lcore/zipper/action/Perform.re b/src/haz3lcore/zipper/action/Perform.re index c50f2fe446..30accd4f7c 100644 --- a/src/haz3lcore/zipper/action/Perform.re +++ b/src/haz3lcore/zipper/action/Perform.re @@ -80,6 +80,8 @@ let go = ), ~col_target=Option.value(col_target, ~default=0), ~measured=syntax.measured, + ~projector_list=syntax.projector_list, + ~projectors=syntax.projectors, d, z, ) @@ -103,6 +105,25 @@ let go = | Select(Resize(Point(goal))) => Select.to_point(~measured=syntax.measured, ~goal, z) |> return(Cant_select) + | Select(Resize(SplicePoint(path, goal))) => + ( + switch (Zipper.splice_context(z)) { + | Some(_) => Select.to_point(~measured=syntax.measured, ~goal, z) + | None => + z + |> Move.to_splice_point( + ~measured=syntax.measured, + ~projector_list=syntax.projector_list, + ~projectors=syntax.projectors, + ~path, + ~goal, + ) + |> OptUtil.and_then( + Select.to_point(~measured=syntax.measured, ~goal), + ) + } + ) + |> return(Cant_select) | Select(Resize(Goal(_))) => failwith("Select not implemented for goals") | Select(All) => Ok(Select.all(z)) | Select(PointToPoint((p1, p2))) => diff --git a/src/haz3lcore/zipper/action/Select.re b/src/haz3lcore/zipper/action/Select.re index 6636c93bb6..af4302008f 100644 --- a/src/haz3lcore/zipper/action/Select.re +++ b/src/haz3lcore/zipper/action/Select.re @@ -26,7 +26,8 @@ let current_term_id = (z: t): option(Id.t) => { switch (p) { | Secondary(_) => None | Grout(_) - | Projector(_) => Some(Piece.id(p)) + | Projector(_) + | Splice(_) => Some(Piece.id(p)) | Tile(t) => switch (t.label, Zipper.parent(z)) { | ([","], Some(Tile({label: ["[", "]"] | ["(", ")"], id, _}))) => @@ -37,7 +38,7 @@ let current_term_id = (z: t): option(Id.t) => { | (["|", "=>"], Some(Tile({label: ["|", "=>"], _}))) when rel == Parent => switch (z.relatives.ancestors) { - | [_, (gp, _), ..._] => Some(gp.id) + | [_, (gp, _), ..._] => Some(Ancestor.id(gp)) | _ => None } | _ => Some(Piece.id(p)) diff --git a/src/haz3lcore/zipper/action/Triggers.re b/src/haz3lcore/zipper/action/Triggers.re index 21fe921d9c..3e08444438 100644 --- a/src/haz3lcore/zipper/action/Triggers.re +++ b/src/haz3lcore/zipper/action/Triggers.re @@ -79,7 +79,7 @@ let refractor_to_invoke = ]; let projector_to_invoke = (pr: Base.projector): Segment.t => - refractor_to_invoke(pr.kind, Piece.unparenthesize(pr.syntax)); + refractor_to_invoke(pr.kind, pr.syntax); let expand_livelit = (~ctx, z: t): option(t) => switch (z.relatives.siblings |> fst |> List.rev) { @@ -123,8 +123,8 @@ let destruct = (z: t): option(t) => let (l, _) = ListUtil.split_last(fst(z.relatives.siblings)); let last = switch (kind, syntax) { - | (Livelit, Tile({children: [[name, ..._]], _})) => [name] - | _ => Piece.unparenthesize(syntax) + | (Livelit, [Tile({children: [[name, ..._]], _}), ..._]) => [name] + | _ => syntax }; Some(Zipper.update_siblings(((_, r)) => (l @ last, r), z)); | _ => None diff --git a/src/language/ProjectorKind.re b/src/language/ProjectorKind.re index 1a2f3e010f..220d9c2d1d 100644 --- a/src/language/ProjectorKind.re +++ b/src/language/ProjectorKind.re @@ -16,7 +16,8 @@ type t = | Card | Livelit | TextArea - | Csv; + | Csv + | VList; let livelit_projectors: list(t) = [ Csv, /* Competes with Card for empty list */ @@ -27,6 +28,7 @@ let livelit_projectors: list(t) = [ TextArea, Card, Livelit, + VList, ]; /* Note: Probe intentionally excluded - probes use separate action path */ @@ -51,6 +53,7 @@ let name = (p: t): string => | Livelit => "livelit" | TextArea => "text" | Csv => "csv" + | VList => "vlist" }; /* This must be updated and kept 1-to-1 with the above @@ -68,6 +71,7 @@ let of_name = (p: string): t => | "livelit" => Livelit | "card" => Card | "csv" => Csv + | "vlist" => VList | _ => failwith("Unknown projector kind") }; diff --git a/src/language/dynamics/DHExp.re b/src/language/dynamics/DHExp.re index 723c36b474..8532d04a88 100644 --- a/src/language/dynamics/DHExp.re +++ b/src/language/dynamics/DHExp.re @@ -120,6 +120,7 @@ let ty_subst = (s: Typ.t, tpat: TPat.t, exp: t): t => { | Parens(_) | UnOp(_) | Projector(_) + | Splice(_) | Module(_) | ModuleExp(_) => continue(exp) }, @@ -167,6 +168,8 @@ let rec ty_comparable = (d1, d2) => { | (_, Parens(d2)) => ty_comparable(d1, d2) | (Projector(_, d1), _) => ty_comparable(d1, d2) | (_, Projector(_, d2)) => ty_comparable(d1, d2) + | (Splice(d1), _) => ty_comparable(d1, d2) + | (_, Splice(d2)) => ty_comparable(d1, d2) | (Asc(d1, _), _) => ty_comparable(d1, d2) | (_, Asc(d2, _)) => ty_comparable(d1, d2) | (Atom(t1), Atom(t2)) => @@ -272,6 +275,8 @@ let rec poly_equal = (d1, d2): option(bool) => { | (_, Parens(d2)) => poly_equal(d1, d2) | (Projector(_, d1), _) => poly_equal(d1, d2) | (_, Projector(_, d2)) => poly_equal(d1, d2) + | (Splice(d1), _) => poly_equal(d1, d2) + | (_, Splice(d2)) => poly_equal(d1, d2) | (Asc(d1, _), _) => poly_equal(d1, d2) | (_, Asc(d2, _)) => poly_equal(d1, d2) diff --git a/src/language/dynamics/Substitution.re b/src/language/dynamics/Substitution.re index 45f867abda..e957bbd350 100644 --- a/src/language/dynamics/Substitution.re +++ b/src/language/dynamics/Substitution.re @@ -97,6 +97,7 @@ let rec in_exp = (env: Environment.t(Exp.t), exp: Exp.t) => | Filter(_) | Parens(_) | Projector(_) + | Splice(_) | Cons(_) | ListConcat(_) | UnOp(_) @@ -153,6 +154,9 @@ and in_pat = | Projector(data, p1) => let (env', p1') = in_pat(env_outer, env_acc, p1); (env', Projector(data, p1') |> Pat.fresh); + | Splice(p1) => + let (env', p1') = in_pat(env_outer, env_acc, p1); + (env', Splice(p1') |> Pat.fresh); | Tuple(l) => let (env', l') = List.fold_left( @@ -217,6 +221,7 @@ and in_typ = (env: Environment.t(Exp.t), typ: Typ.t) => | TupLabel(_, _) | Parens(_) | Projector(_) + | Splice(_) | Rec(_, _) | Poly(_, _) | ProdProjection(_, _) diff --git a/src/language/dynamics/transition/Ascriptions.re b/src/language/dynamics/transition/Ascriptions.re index 30810cdd27..646421659d 100644 --- a/src/language/dynamics/transition/Ascriptions.re +++ b/src/language/dynamics/transition/Ascriptions.re @@ -225,6 +225,8 @@ let rec transition = (~recursive=false, d: DHExp.t): option(DHExp.t) => { Some(Parens(Asc(e, t) |> DHExp.fresh) |> DHExp.fresh) | (Projector(data, e), _) => Some(Projector(data, Asc(e, t) |> DHExp.fresh) |> DHExp.fresh) + | (Splice(e), _) => + Some(Splice(Asc(e, t) |> DHExp.fresh) |> DHExp.fresh) // We _could_ do this, but it would be a bit weird | (Use(_), _) // I'm scaredto do Use because the type-directed literals might make this look weird in the stepper | (BuiltinFun(_), _) diff --git a/src/language/dynamics/transition/PatternMatch.re b/src/language/dynamics/transition/PatternMatch.re index 64afe2b7a9..dda11c65cb 100644 --- a/src/language/dynamics/transition/PatternMatch.re +++ b/src/language/dynamics/transition/PatternMatch.re @@ -67,7 +67,8 @@ let match_pattern = let* ds = Unboxing.unbox(Tuple(List.length(ps)), d); List.map2(recur, ps, ds) |> List.fold_left(combine_result, Matches([])); | Parens(p) - | Projector(_, p) => recur(p, d) + | Projector(_, p) + | Splice(p) => recur(p, d) | Asc(p, t1) => recur(p, Ascriptions.transition_multiple(Asc(d, t1) |> DHExp.fresh)) }; diff --git a/src/language/dynamics/transition/Transition.re b/src/language/dynamics/transition/Transition.re index cae5a51a0a..649f6f15fb 100644 --- a/src/language/dynamics/transition/Transition.re +++ b/src/language/dynamics/transition/Transition.re @@ -962,6 +962,14 @@ module Transition = (EV: EV_MODE) => { kind: RemoveParens, is_value: false, }); + | Splice(d') => + let. _ = otherwise(env, d); + Step({ + expr: d', + side_effects: [], + kind: RemoveParens, + is_value: false, + }); | TyAlias(_, _, d) => let. _ = otherwise(env, d); Step({ diff --git a/src/language/dynamics/transition/Unboxing.re b/src/language/dynamics/transition/Unboxing.re index ee032d29e2..bc211f91f8 100644 --- a/src/language/dynamics/transition/Unboxing.re +++ b/src/language/dynamics/transition/Unboxing.re @@ -252,6 +252,7 @@ let rec unbox: type a. (unbox_request(a), DHExp.t) => unboxed(a) = Closure(_) | Parens(_) | Projector(_) | + Splice(_) | ListConcat(_) | TupleExtension(_) | Dot(_) | diff --git a/src/language/proof/MatchExp.re b/src/language/proof/MatchExp.re index c32162d1d7..7e1c74fdb0 100644 --- a/src/language/proof/MatchExp.re +++ b/src/language/proof/MatchExp.re @@ -44,9 +44,11 @@ let rec match_exp = switch (exp_r |> Exp.term_of, exp |> Exp.term_of) { /* Parens */ | (Parens(e1), _) - | (Projector(_, e1), _) => match_exp(alphas, ctx, e1, exp) + | (Projector(_, e1), _) + | (Splice(e1), _) => match_exp(alphas, ctx, e1, exp) | (_, Parens(e2)) - | (_, Projector(_, e2)) => match_exp(alphas, ctx, exp_r, e2) + | (_, Projector(_, e2)) + | (_, Splice(e2)) => match_exp(alphas, ctx, exp_r, e2) // TODO: Better cast logic | (Asc(e1, _), _) => match_exp(alphas, ctx, e1, exp) | (_, Asc(e2, _)) => match_exp(alphas, ctx, exp_r, e2) @@ -267,9 +269,11 @@ and match_any = (_: match_ctx, _: Any.t, _: Any.t): option(unit) => None and match_pat = (pat_r: Pat.t, pat: Pat.t): option(alphas) => switch (pat_r |> Pat.term_of, pat |> Pat.term_of) { | (Parens(p1), _) - | (Projector(_, p1), _) => match_pat(p1, pat) + | (Projector(_, p1), _) + | (Splice(p1), _) => match_pat(p1, pat) | (_, Parens(p2)) - | (_, Projector(_, p2)) => match_pat(pat_r, p2) + | (_, Projector(_, p2)) + | (_, Splice(p2)) => match_pat(pat_r, p2) | (Asc(p1, _), _) => match_pat(p1, pat) | (_, Asc(p2, _)) => match_pat(pat_r, p2) | (Invalid(x), Invalid(y)) when x == y => Some([]) diff --git a/src/language/proof/ProofHacks.re b/src/language/proof/ProofHacks.re index 59f900e75b..0ff9576300 100644 --- a/src/language/proof/ProofHacks.re +++ b/src/language/proof/ProofHacks.re @@ -135,6 +135,7 @@ let rec pat_to_exp = (pat: Pat.t): Exp.t => { | Tuple(xs) => rewrap(Tuple(List.map(pat_to_exp, xs))) | Parens(e) => rewrap(Parens(pat_to_exp(e))) | Projector(data, e) => rewrap(Projector(data, pat_to_exp(e))) + | Splice(e) => rewrap(Splice(pat_to_exp(e))) | Ap(e1, e2) => rewrap(Ap(Forward, pat_to_exp(e1), pat_to_exp(e2))) | Asc(e, t1) => rewrap(Asc(pat_to_exp(e), t1)) | Label(l) => rewrap(Label(l)) @@ -226,7 +227,8 @@ let dhpat_extend_ctx = (dhpat: DHPat.t, ty: Typ.t, ctx: Ctx.t): option(Ctx.t) => | Invalid(_) | MultiHole(_) => Some([]) | Parens(dhp) - | Projector(_, dhp) => dhpat_var_entry(dhp, ty) + | Projector(_, dhp) + | Splice(dhp) => dhpat_var_entry(dhp, ty) | Atom(c) => Typ.equal(ty, Atom(Atom.cls_of_t(c)) |> Typ.temp) ? Some([]) : None | Constructor(_) => Some([]) // TODO: make this stricter @@ -260,7 +262,8 @@ let rec get_inductive_hypotheses = (m, t, pat) => { | Tuple(xs) => List.concat(List.map(get_inductive_hypotheses_inner(m, t, _), xs)) | Parens(e) - | Projector(_, e) => get_inductive_hypotheses_inner(m, t, e) + | Projector(_, e) + | Splice(e) => get_inductive_hypotheses_inner(m, t, e) | Ap(e1, e2) => get_inductive_hypotheses_inner(m, t, e1) @ get_inductive_hypotheses_inner(m, t, e2) @@ -483,6 +486,7 @@ let rec replace_exp = | Closure(_) | Parens(_) | Projector(_) + | Splice(_) | Cons(_, _) | ListConcat(_, _) | UnOp(_, _) diff --git a/src/language/statics/Coverage.re b/src/language/statics/Coverage.re index bdb2755884..f959c073a6 100644 --- a/src/language/statics/Coverage.re +++ b/src/language/statics/Coverage.re @@ -140,6 +140,7 @@ module Ctr = { | Var(_) => Infinite | Parens(_) | Projector(_) + | Splice(_) | ExplicitNonlabel | Label(_) | Sig(_) => @@ -422,6 +423,7 @@ module UnseenPatternList: UnseenPatternList = { | Var(_) => unseen_pattern | Parens(_) | Projector(_) + | Splice(_) | ProdProjection(_) | ProdExtension(_) | ExplicitNonlabel @@ -560,6 +562,7 @@ module UnseenPatternList: UnseenPatternList = { | Var(_) => cons_wild(unseen_pattern) | Parens(_) | Projector(_) + | Splice(_) | ProdProjection(_) | ProdExtension(_) | ExplicitNonlabel @@ -624,6 +627,7 @@ module UnseenPatternList: UnseenPatternList = { | Var(_) => cons_wild(unseen_pattern) | Parens(_) | Projector(_) + | Splice(_) | ProdProjection(_) | ProdExtension(_) | ExplicitNonlabel diff --git a/src/language/statics/Elaborator.re b/src/language/statics/Elaborator.re index ecaaaf9850..717f8a5220 100644 --- a/src/language/statics/Elaborator.re +++ b/src/language/statics/Elaborator.re @@ -154,6 +154,9 @@ let rec elaborate_pattern = | Projector(data, p) => let (p', _) = elaborate_pattern(m, p); Projector(data, p') |> rewrap; + | Splice(p) => + let (p', _) = elaborate_pattern(m, p); + Splice(p') |> rewrap; | Asc(p, t) => let (p', _) = elaborate_pattern(m, p); Asc(p', Typ.normalize(ctx, t)) |> rewrap; @@ -212,6 +215,9 @@ let rec elaborate = (m: Statics.Map.t, uexp: Exp.t): (DHExp.t, Typ.t) => { | Projector(data, e) => let (e', _) = elaborate(m, e); Projector(data, e') |> rewrap; + | Splice(e) => + let (e', _) = elaborate(m, e); + Splice(e') |> rewrap; | Deferral(_) => uexp | Atom(c) => let c = diff --git a/src/language/statics/Statics.re b/src/language/statics/Statics.re index 89e4a66ba9..8e68bec892 100644 --- a/src/language/statics/Statics.re +++ b/src/language/statics/Statics.re @@ -63,7 +63,8 @@ let rec collect_pat_type_refs = (ctx: Ctx.t, pat: Pat.t): CoCtx.t => collect_pat_type_refs(ctx, p2), ]) | Parens(p) - | Projector(_, p) => collect_pat_type_refs(ctx, p) + | Projector(_, p) + | Splice(p) => collect_pat_type_refs(ctx, p) | _ => CoCtx.empty }; @@ -544,7 +545,8 @@ and uexp_to_info_map = add'(~self=Self.of_exp_var(ctx, name), ~co_ctx, m); | DynamicErrorHole(e, _) | Parens(e) - | Projector(_, e) => + | Projector(_, e) + | Splice(e) => let (e, m) = go(~ana, e, m); add'(~self=e.self, ~co_ctx=e.co_ctx, m); | UnOp(Meta(Unquote), e) when is_in_filter => @@ -2268,7 +2270,8 @@ and upat_to_info_map = ? atomic(DuplicateLabel(name, self), Coverage.Constraint.Truth) : atomic(self, Coverage.Constraint.Truth); | Parens(p) - | Projector(_, p) => + | Projector(_, p) + | Splice(p) => let (p, m) = go(~ctx, ~ana, p, ~duplicate_bindings, ~duplicate_labels, m); add'(~self=p.self, ~ctx=p.ctx, ~constraint_=p.constraint_, m); @@ -2375,7 +2378,8 @@ and utyp_to_info_map = add(m) | List(t) | Parens(t) - | Projector(_, t) => add(go(t, m) |> snd) + | Projector(_, t) + | Splice(t) => add(go(t, m) |> snd) | Arrow(t1, t2) => let m = go(t1, m) |> snd; let m = go(t2, m) |> snd; diff --git a/src/language/term/Abbreviate.re b/src/language/term/Abbreviate.re index 0adc9d2165..c842df8203 100644 --- a/src/language/term/Abbreviate.re +++ b/src/language/term/Abbreviate.re @@ -926,6 +926,7 @@ let rec abbreviate_exp = (exp: Exp.t): Exp.t => { } | Filter(_) => indet_term //TODO | Projector(data, e) => Projector(data, abbreviate_exp(e)) + | Splice(e) => Splice(abbreviate_exp(e)) | Module(items) => /* Modules should typically be expanded to labeled tuples before abbreviation runs (in probe values). Handle gracefully anyway. */ @@ -1193,6 +1194,7 @@ and abbreviate_pat = (pat: Pat.t): Pat.t => { Parens(abbreviate_pat(p)); } | Projector(data, p) => Projector(data, abbreviate_pat(p)) + | Splice(p) => Splice(abbreviate_pat(p)) }; rewrap(term); } @@ -1387,6 +1389,7 @@ and abbreviate_typ = (typ: Typ.t): Typ.t => { e, ) | Projector(data, t) => Projector(data, abbreviate_typ(t)) + | Splice(t) => Splice(abbreviate_typ(t)) | Sig(items) => if (available^ <= 2) { Sig([]); diff --git a/src/language/term/Equality.re b/src/language/term/Equality.re index 9116fdd8da..a7afb4df70 100644 --- a/src/language/term/Equality.re +++ b/src/language/term/Equality.re @@ -133,6 +133,8 @@ let equality = | (_, Parens(x)) when ignore_parens => exp'(e1, x) | (Projector(_, x), _) when ignore_parens => exp'(x, e2) | (_, Projector(_, x)) when ignore_parens => exp'(e1, x) + | (Splice(x), _) when ignore_parens => exp'(x, e2) + | (_, Splice(x)) when ignore_parens => exp'(e1, x) | (Asc(x, _), _) when ignore_ascriptions => exp'(x, e2) | (_, Asc(x, _)) when ignore_ascriptions => exp'(e1, x) | (Filter(_, x), _) when ignore_filters => exp'(x, e2) @@ -226,6 +228,8 @@ let equality = | (Parens(_), _) => false | (Projector(d1, x), Projector(d2, y)) => d1 == d2 && exp'(x, y) | (Projector(_), _) => false + | (Splice(x), Splice(y)) => exp'(x, y) + | (Splice(_), _) => false | (Asc(x, t1), Asc(y, t2)) => typ'(t1, t2) && exp'(x, y) | (Asc(_), _) => false | (Filter(f1, x), Filter(f2, y)) => filter'(f1, f2) && exp'(x, y) @@ -502,6 +506,8 @@ let equality = | (_, Parens(x)) when ignore_parens => pat'(p1, x) | (Projector(_, x), _) when ignore_parens => pat'(x, p2) | (_, Projector(_, x)) when ignore_parens => pat'(p1, x) + | (Splice(x), _) when ignore_parens => pat'(x, p2) + | (_, Splice(x)) when ignore_parens => pat'(p1, x) | (Asc(x, _), _) when ignore_ascriptions => pat'(x, p2) | (_, Asc(x, _)) when ignore_ascriptions => pat'(p1, x) @@ -510,6 +516,8 @@ let equality = | (Parens(_), _) => None | (Projector(d1, x), Projector(d2, y)) when d1 == d2 => pat'(x, y) | (Projector(_), _) => None + | (Splice(x), Splice(y)) => pat'(x, y) + | (Splice(_), _) => None | (Asc(x, t1), Asc(y, t2)) => if (typ'(t1, t2)) { pat'(x, y); @@ -610,6 +618,8 @@ let equality = | (_, Parens(x)) when ignore_parens => typ'(t1, x) | (Projector(_, x), _) when ignore_parens => typ'(x, t2) | (_, Projector(_, x)) when ignore_parens => typ'(t1, x) + | (Splice(x), _) when ignore_parens => typ'(x, t2) + | (_, Splice(x)) when ignore_parens => typ'(t1, x) | (TupLabel({term: ExplicitNonlabel, _}, t1), _) when ignore_explicit_unlabelling => typ'(t1, t2) @@ -622,6 +632,8 @@ let equality = | (Parens(_), _) => false | (Projector(d1, x), Projector(d2, y)) => d1 == d2 && typ'(x, y) | (Projector(_), _) => false + | (Splice(x), Splice(y)) => typ'(x, y) + | (Splice(_), _) => false // Forms with type binders | (Rec(tp1, t1), Rec(tp2, t2)) => diff --git a/src/language/term/Exp.re b/src/language/term/Exp.re index c6dd2e2f87..14e04dbe09 100644 --- a/src/language/term/Exp.re +++ b/src/language/term/Exp.re @@ -120,7 +120,8 @@ let rec cls_of_term: type a. Grammar.exp_term(a) => cls = | Parens(_) => Parens // We're bypassing projectors from cls because they're breaking cursor inspector messages. // Future work could be to specialize projectors in the cursor inspector. - | Projector(_, e) => cls_of_term(e.term) + | Projector(_, e) + | Splice(e) => cls_of_term(e.term) | Cons(_) => Cons | ListConcat(_) => ListConcat | UnOp(op, _) => UnOp(op) @@ -211,7 +212,8 @@ let get_label: t => option(LabeledTuple.label) = { let rec is_fun = (e: t) => { switch (e.term) { | Parens(e) - | Projector(_, e) => is_fun(e) + | Projector(_, e) + | Splice(e) => is_fun(e) | Asc(e, _) => is_fun(e) | TypFun(_) | Fun(_) @@ -281,6 +283,7 @@ let rec is_tuple_of_functions = (e: t) => | Asc(e, _) | Parens(e) | Projector(_, e) + | Splice(e) | TupLabel(_, e) => is_tuple_of_functions(e) | Tuple(es) => es |> List.for_all(is_fun) | Dot(e1, e2) => @@ -362,6 +365,7 @@ let rec get_num_of_functions = (e: t) => switch (e.term) { | Parens(e) | Projector(_, e) + | Splice(e) | TupLabel(_, e) | Dot(e, _) => get_num_of_functions(e) | Tuple(es) => is_tuple_of_functions(e) ? Some(List.length(es)) : None diff --git a/src/language/term/Grammar.re b/src/language/term/Grammar.re index a4ff92d2a2..0e8ef2eaac 100644 --- a/src/language/term/Grammar.re +++ b/src/language/term/Grammar.re @@ -99,6 +99,7 @@ and exp_term('a) = | Closure([@show.opaque] Environment.t(exp_t('a)), exp_t('a)) | Parens(exp_t('a)) // ( | Projector(projector_data, exp_t('a)) + | Splice(exp_t('a)) | Cons(exp_t('a), exp_t('a)) | ListConcat(exp_t('a), exp_t('a)) | UnOp(Operators.op_un, exp_t('a)) @@ -126,6 +127,7 @@ and pat_term('a) = | TupLabel(pat_t('a), pat_t('a)) | Parens(pat_t('a)) | Projector(projector_data, pat_t('a)) + | Splice(pat_t('a)) | Ap(pat_t('a), pat_t('a)) | Asc(pat_t('a), typ_t('a)) and pat_t('a) = Annotated.t(pat_term('a), 'a) @@ -142,6 +144,7 @@ and typ_term('a) = | TupLabel(typ_t('a), typ_t('a)) | Parens(typ_t('a)) | Projector(projector_data, typ_t('a)) + | Splice(typ_t('a)) | Rec(tpat_t('a), typ_t('a)) | Poly(tpat_t('a), typ_t('a)) | ProofOf(exp_t('a)) @@ -294,6 +297,7 @@ let rec map_exp_annotation: type a b. (a => b, exp_t(a)) => exp_t(b) = ) | Parens(e) => Parens(map_exp_annotation(f, e)) | Projector(data, e) => Projector(data, map_exp_annotation(f, e)) + | Splice(e) => Splice(map_exp_annotation(f, e)) | Cons(e1, e2) => Cons(map_exp_annotation(f, e1), map_exp_annotation(f, e2)) | ListConcat(e1, e2) => @@ -374,6 +378,7 @@ and map_pat_annotation: 'a 'b. ('a => 'b, pat_t('a)) => pat_t('b) = TupLabel(map_pat_annotation(f, p1), map_pat_annotation(f, p2)) | Parens(p) => Parens(map_pat_annotation(f, p)) | Projector(data, p) => Projector(data, map_pat_annotation(f, p)) + | Splice(p) => Splice(map_pat_annotation(f, p)) | Ap(p1, p2) => Ap(map_pat_annotation(f, p1), map_pat_annotation(f, p2)) | Asc(p, t) => @@ -397,6 +402,7 @@ and map_typ_annotation: 'a 'b. ('a => 'b, typ_t('a)) => typ_t('b) = Arrow(map_typ_annotation(f, t1), map_typ_annotation(f, t2)) | Parens(t) => Parens(map_typ_annotation(f, t)) | Projector(data, t) => Projector(data, map_typ_annotation(f, t)) + | Splice(t) => Splice(map_typ_annotation(f, t)) | Rec(tp, t) => Rec(map_tpat_annotation(f, tp), map_typ_annotation(f, t)) | Poly(tp, t) => diff --git a/src/language/term/Pat.re b/src/language/term/Pat.re index ecafce7d49..2b2e4e00cb 100644 --- a/src/language/term/Pat.re +++ b/src/language/term/Pat.re @@ -56,7 +56,8 @@ let cls_of_term: Grammar.pat_term('a) => cls = | TupLabel(_) => TupLabel | Tuple(_) => Tuple | Parens(_) => Parens - | Projector(_) => Projector + | Projector(_) + | Splice(_) => Projector | Ap(_) => Ap | Asc(_) => Asc; @@ -89,6 +90,7 @@ let rec is_var = (pat: t): option(Var.t) => { switch (pat.term) { | Parens(pat) | Projector(_, pat) + | Splice(pat) | TupLabel(_, pat) | Asc(pat, _) => is_var(pat) | Var(v) => Some(v) @@ -113,6 +115,7 @@ let rec is_tuple_of_vars = (pat: t) => switch (pat.term) { | Parens(pat) | Projector(_, pat) + | Splice(pat) | Asc(pat, _) | TupLabel(_, pat) => is_tuple_of_vars(pat) | Tuple(pats) => pats |> List.for_all(x => x |> is_var |> Option.is_some) @@ -135,6 +138,7 @@ let rec get_var = (pat: t) => { switch (pat.term) { | Parens(pat) | Projector(_, pat) + | Splice(pat) | TupLabel(_, pat) => get_var(pat) | Var(x) => Some(x) | Asc(x, _) => get_var(x) @@ -157,6 +161,7 @@ let rec get_fun_var = (pat: t) => { switch (pat.term) { | Parens(pat) | Projector(_, pat) + | Splice(pat) | TupLabel(_, pat) => get_fun_var(pat) | Asc(pat, t1) => if (Typ.is_arrow(t1) || Typ.is_poly(t1)) { @@ -187,6 +192,7 @@ let rec get_bindings = (pat: t) => switch (pat.term) { | Parens(pat) | Projector(_, pat) + | Splice(pat) | Asc(pat, _) | TupLabel(_, pat) => get_bindings(pat) | Tuple(pats) => @@ -218,6 +224,7 @@ let rec get_num_of_vars = (pat: t) => switch (pat.term) { | Parens(pat) | Projector(_, pat) + | Splice(pat) | Asc(pat, _) | TupLabel(_, pat) => get_num_of_vars(pat) | Tuple(pats) => is_tuple_of_vars(pat) ? Some(List.length(pats)) : None @@ -271,6 +278,7 @@ let rec bindings = (dp: t): Binding.s => | Asc(y, _) | Parens(y) | Projector(_, y) + | Splice(y) | TupLabel(_, y) => bindings(y) | Var(name) => [ { diff --git a/src/language/term/TermBase.re b/src/language/term/TermBase.re index 8092906d4e..9b6c1072ff 100644 --- a/src/language/term/TermBase.re +++ b/src/language/term/TermBase.re @@ -252,6 +252,7 @@ and Exp: { | Closure(env, e) => Closure(env, exp_map_term(e)) | Parens(e) => Parens(exp_map_term(e)) | Projector(data, e) => Projector(data, exp_map_term(e)) + | Splice(e) => Splice(exp_map_term(e)) | Cons(e1, e2) => Cons(exp_map_term(e1), exp_map_term(e2)) | ListConcat(e1, e2) => ListConcat(exp_map_term(e1), exp_map_term(e2)) @@ -346,6 +347,7 @@ and Pat: { TupLabel(pat_map_term(label), pat_map_term(e)) | Parens(e) => Parens(pat_map_term(e)) | Projector(data, p) => Projector(data, pat_map_term(p)) + | Splice(p) => Splice(pat_map_term(p)) | Asc(e, t) => Asc(pat_map_term(e), typ_map_term(t)) }, }; @@ -417,6 +419,7 @@ and Typ: { TupLabel(typ_map_term(label), typ_map_term(e)) | Parens(e) => Parens(typ_map_term(e)) | Projector(data, t) => Projector(data, typ_map_term(t)) + | Splice(t) => Splice(typ_map_term(t)) | Arrow(t1, t2) => Arrow(typ_map_term(t1), typ_map_term(t2)) | Sum(variants) => Sum( diff --git a/src/language/term/Typ.re b/src/language/term/Typ.re index 563bf0ddf5..c909fef1b9 100644 --- a/src/language/term/Typ.re +++ b/src/language/term/Typ.re @@ -91,7 +91,8 @@ let cls_of_term: Grammar.typ_term('a) => cls = | Label(_) => Label | ExplicitNonlabel => ExplicitNonlabel | Parens(_) => Parens - | Projector(_) => Projector + | Projector(_) + | Splice(_) => Projector | Sum(_) => Sum | Rec(_) => Rec | Poly(_) => Poly @@ -130,6 +131,7 @@ let rec is_arrow = (typ: t) => { switch (typ.term) { | Parens(typ) | Projector(_, typ) + | Splice(typ) | TupLabel(_, typ) => is_arrow(typ) | Arrow(_) => true | Unknown(_) @@ -155,6 +157,7 @@ let is_atom = (ty: t): bool => | ProofOf(_) | Parens(_) | Projector(_) + | Splice(_) | TupLabel(_) | Arrow(_) | Unknown(_) @@ -175,6 +178,7 @@ let rec has_fun = (typ: t) => switch (typ.term) { | Parens(typ) | Projector(_, typ) + | Splice(typ) | TupLabel(_, typ) | ProdProjection(typ, _) => has_fun(typ) | Arrow(_) @@ -203,6 +207,7 @@ let rec is_poly = (typ: t) => { switch (typ.term) { | Parens(typ) | Projector(_, typ) + | Splice(typ) | TupLabel(_, typ) => is_poly(typ) | Poly(_) => true | ProofOf(_) @@ -281,7 +286,8 @@ let rec free_vars = (~bound=[], ty: t): list(Var.t) => | ExplicitNonlabel => [] | Var(v) => List.mem(v, bound) ? [] : [v] | Parens(ty) - | Projector(_, ty) => free_vars(~bound, ty) + | Projector(_, ty) + | Splice(ty) => free_vars(~bound, ty) | List(ty) => free_vars(~bound, ty) | ProdExtension(t1, t2) | Arrow(t1, t2) => free_vars(~bound, t1) @ free_vars(~bound, t2) @@ -317,7 +323,8 @@ let rec vars = (ty: t): list(Var.t) => | Rec(_, ty) => vars(ty) | List(ty) => vars(ty) | Parens(ty) - | Projector(_, ty) => vars(ty) + | Projector(_, ty) + | Splice(ty) => vars(ty) | Poly({term: Var(x), _}, ty) => vars(ty) |> List.filter((x': string) => x' != x) | Poly(_, ty) => vars(ty) @@ -377,7 +384,8 @@ let rec num_nodes = (ty: t): int => { | Rec(_, ty) => 1 + num_nodes(ty) | List(ty) => 1 + num_nodes(ty) | Parens(ty) - | Projector(_, ty) => 1 + num_nodes(ty) + | Projector(_, ty) + | Splice(ty) => 1 + num_nodes(ty) | Poly(_, ty) => 1 + num_nodes(ty) | ExplicitNonlabel | Label(_) => 1 @@ -412,7 +420,8 @@ let rec count_unknowns = (ty: t): int => | Rec(_, ty) => count_unknowns(ty) | List(ty) => count_unknowns(ty) | Parens(ty) - | Projector(_, ty) => count_unknowns(ty) + | Projector(_, ty) + | Splice(ty) => count_unknowns(ty) | Poly(_, ty) => count_unknowns(ty) | ProofOf(_) => 0 | ExplicitNonlabel @@ -434,7 +443,8 @@ let rec contains_sum_or_var = (ty: t): bool => | Rec(_, ty) => contains_sum_or_var(ty) | List(ty) => contains_sum_or_var(ty) | Parens(ty) - | Projector(_, ty) => contains_sum_or_var(ty) + | Projector(_, ty) + | Splice(ty) => contains_sum_or_var(ty) | Poly(_, ty) => contains_sum_or_var(ty) | ProofOf(_) => false | ProdProjection(ty1, _) => contains_sum_or_var(ty1) @@ -471,6 +481,7 @@ let rec subst = (s: t, x: TPat.t, ty: t): t => { | Var(y) => str == y ? s : Var(y) |> rewrap | Parens(ty) => Parens(subst(s, x, ty)) |> rewrap | Projector(data, ty) => Projector(data, subst(s, x, ty)) |> rewrap + | Splice(ty) => Splice(subst(s, x, ty)) |> rewrap | ProdProjection(t1, t2) => ProdProjection(subst(s, x, t1), subst(s, x, t2)) |> rewrap | ProdExtension(t1, t2) => @@ -627,7 +638,8 @@ let rec normalize = (~rec_counter=0, ctx: Ctx.t, ty: t): t => { | ExplicitNonlabel | Label(_) => ty | Parens(t) - | Projector(_, t) => normalize(ctx, t) + | Projector(_, t) + | Splice(t) => normalize(ctx, t) | List(t) => List(normalize(ctx, t)) |> rewrap | Arrow(t1, t2) => Arrow(normalize(ctx, t1), normalize(ctx, t2)) |> rewrap @@ -737,9 +749,11 @@ let rec meet = (ctx: Ctx.t, ty1: t, ty2: t): option(t) => { let meet' = meet(ctx); switch (term_of(ty1), term_of(ty2)) { | (_, Parens(ty2)) - | (_, Projector(_, ty2)) => meet'(ty1, ty2) + | (_, Projector(_, ty2)) + | (_, Splice(ty2)) => meet'(ty1, ty2) | (Parens(ty1), _) - | (Projector(_, ty1), _) => meet'(ty1, ty2) + | (Projector(_, ty1), _) + | (Splice(ty1), _) => meet'(ty1, ty2) | (TupLabel({term: ExplicitNonlabel, _}, ty1'), _) => meet'(ty1', ty2) | (_, TupLabel({term: ExplicitNonlabel, _}, ty2')) => meet'(ty1, ty2') | (Unknown(p1), Unknown(p2)) => @@ -864,6 +878,7 @@ let rec match_synswitch = (t1: t, t2: t) => { | (Parens(t1), _) => Parens(match_synswitch(t1, t2)) |> rewrap1 | (Projector(data, t1), _) => Projector(data, match_synswitch(t1, t2)) |> rewrap1 + | (Splice(t1), _) => Splice(match_synswitch(t1, t2)) |> rewrap1 | (Unknown(SynSwitch), _) => t2 // These cases can't have a synswitch inside | (Unknown(_), _) @@ -1071,7 +1086,8 @@ let rec is_syn = (ty: t): bool => switch (ty |> term_of) { | TupLabel(_, x) | Parens(x) - | Projector(_, x) => is_syn(x) + | Projector(_, x) + | Splice(x) => is_syn(x) | Unknown(SynSwitch) => true | Unknown(_) | Atom(_) @@ -1094,7 +1110,8 @@ let rec is_ana_atom = (ty: t) => switch (ty |> term_of) { | TupLabel(_, x) | Parens(x) - | Projector(_, x) => is_ana_atom(x) + | Projector(_, x) + | Splice(x) => is_ana_atom(x) | Atom(a) => Some(a) | Unknown(_) | ExplicitNonlabel @@ -1116,7 +1133,8 @@ let rec is_syn_plus = (ty: t): bool => switch (ty |> term_of) { | TupLabel(_, x) | Parens(x) - | Projector(_, x) => is_syn_plus(x) + | Projector(_, x) + | Splice(x) => is_syn_plus(x) | Unknown(SynSwitch) => true | Arrow(t1, t2) => is_syn(t1) && is_syn_plus(t2) | Poly(_, t) => is_syn(t) @@ -1139,7 +1157,8 @@ let rec is_syn_plus = (ty: t): bool => let rec needs_parens = (ty: t): bool => switch (term_of(ty)) { | Parens(ty) - | Projector(_, ty) => needs_parens(ty) + | Projector(_, ty) + | Splice(ty) => needs_parens(ty) | Unknown(_) | Atom(_) | ExplicitNonlabel @@ -1170,7 +1189,8 @@ let pretty_print_tvar = (tv: TPat.t): string => let rec pretty_print = (ty: t): string => switch (term_of(ty)) { | Parens(ty) - | Projector(_, ty) => pretty_print(ty) + | Projector(_, ty) + | Splice(ty) => pretty_print(ty) | Unknown(_) => "?" | Atom(Int) => "Int" | Atom(Float) => "Float" diff --git a/src/menhirParser/Conversion.re b/src/menhirParser/Conversion.re index 78762ec1c9..f96f54ab8a 100644 --- a/src/menhirParser/Conversion.re +++ b/src/menhirParser/Conversion.re @@ -423,6 +423,7 @@ module rec Exp: { | Dot(e1, e2) => Dot(of_core(e1), of_core(e2)) | Ap(Reverse, _, _) => raise(Failure("Reverse not supported")) | Projector(_, e) => of_core(e) + | Splice(e) => of_core(e) | Module(items) => Module(List.map(ModItem.of_core, items)) | ModuleExp(mp, def, body) => ModuleExp(pat_of_mpat(mp), of_core(def), of_core(body)) @@ -561,6 +562,7 @@ and Typ: { ); SumTyp(sumterms); | Projector(_, t) => of_core(t) + | Splice(t) => of_core(t) | Sig(items) => Sig(List.map(SigItem.of_core, items)) }; }; @@ -637,6 +639,7 @@ and Pat: { | ExplicitNonlabel => ExplicitNonlabel | TupLabel(p1, p2) => TupLabelPat(of_core(p1), of_core(p2)) | Projector(_, p) => of_core(p) + | Splice(p) => of_core(p) }; }; } diff --git a/src/regen/dune b/src/regen/dune new file mode 100644 index 0000000000..085766cb32 --- /dev/null +++ b/src/regen/dune @@ -0,0 +1,3 @@ +(executable + (name regen_docs) + (libraries sexplib str)) diff --git a/src/regen/regen_docs.ml b/src/regen/regen_docs.ml new file mode 100644 index 0000000000..f65f1536ca --- /dev/null +++ b/src/regen/regen_docs.ml @@ -0,0 +1,286 @@ +(* Migrate doc/slide .ml files to the current segment sexp format. + * + * The branch changed `Base.projector` from `ProjectorCore.t(piece)` to + * `ProjectorCore.t(segment)`, so every projector's stored `syntax` is now + * a list of pieces rather than a single piece. Old .ml files have + * `(syntax (Tile ...))` in their persisted segment sexps; they need to + * become `(syntax ())` (or `(syntax ((Tile ...)))` + * for non-paren tiles). + * + * This tool reads each .ml file, locates the `segment = "..."` field, sexp- + * parses its decoded contents, walks the tree replacing every + * `(Projector ((... (syntax X) ...)))` with the segment-based equivalent, + * and writes back the file with the new sexp content. Everything else in + * the .ml file (backup_text, refractors, name) is left untouched. + * + * Run: `dune exec src/regen/regen_docs.exe`. *) + +let ml_files = + [ + "src/web/init/docs/BasicReference.ml"; + "src/web/init/docs/Projectors.ml"; + "src/web/init/docs/ADTs.ml"; + "src/web/init/docs/Tuples.ml"; + "src/web/init/docs/Modules.ml"; + "src/web/init/docs/Tables.ml"; + "src/web/init/docs/Polymorphism.ml"; + "src/web/init/docs/Cards.ml"; + "src/web/init/docs/Probes.ml"; + "src/web/init/docs/Livelits.ml"; + "src/b2t2/slides/B2T2ExampleTables.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIConstructorsemptyTable.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddRows.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIConstructorsaddColumn.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIConstructorsbuildColumn.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIConstructorsvcat.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIConstructorshcat.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIConstructorsvalues.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIConstructorscrossJoin.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIConstructorsleftJoin.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIProperties.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIAccessSubcomponents.ml"; + "src/b2t2/slides/table_api/B2T2TableAPISubtable.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIOrdering.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIAggregate.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIMissingValues.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIDataCleaning.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesFlatten.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiestransformColumn.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesrenameColumns.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesfind.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupByRetentive.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupBySubtractive.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesupdate.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselect.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesselectMany.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesgroupJoin.ml"; + "src/b2t2/slides/table_api/B2T2TableAPIUtilitiesjoin.ml"; + "src/b2t2/slides/example_programs/B2T2ExampleProgramsDotProduct.ml"; + "src/b2t2/slides/example_programs/B2T2ExampleProgramspHackingHomogeneous.ml"; + "src/b2t2/slides/example_programs/B2T2ExampleProgramspHackingHeterogeneous.ml"; + "src/b2t2/slides/example_programs/B2T2ExampleProgramsquizScoreFilter.ml"; + "src/b2t2/slides/example_programs/B2T2ExampleProgramsquizScoreSelect.ml"; + "src/b2t2/slides/example_programs/B2T2ExampleProgramsgroupByRetentive.ml"; + "src/b2t2/slides/example_programs/B2T2ExampleProgramsgroupBySubtractive.ml"; + "src/b2t2/slides/errors/B2T2ErrorsMalformedTables.ml"; + "src/b2t2/slides/errors/B2T2ErrorsUsingTablesPart1.ml"; + "src/b2t2/slides/errors/B2T2ErrorsUsingTablesPart2.ml"; + "src/b2t2/slides/errors/B2T2ErrorsUsingTablesPart3.ml"; + ] + +(* OCaml string-literal decoding: turn the textual contents of a quoted + * string into the actual string value. Handles the escapes that ocamlformat + * and ppx_deriving.show actually emit on these files: backslash-n, -t, -r, + * -backslash, -quote, -apostrophe, decimal triples, hex escapes, and the + * line-continuation form (backslash followed by newline + whitespace). *) +let decode_ocaml_string (raw : string) : string = + let buf = Buffer.create (String.length raw) in + let len = String.length raw in + let i = ref 0 in + while !i < len do + let c = raw.[!i] in + if c = '\\' && !i + 1 < len then begin + let n = raw.[!i + 1] in + match n with + | 'n' -> + Buffer.add_char buf '\n'; + i := !i + 2 + | 't' -> + Buffer.add_char buf '\t'; + i := !i + 2 + | 'r' -> + Buffer.add_char buf '\r'; + i := !i + 2 + | 'b' -> + Buffer.add_char buf '\b'; + i := !i + 2 + | '\\' -> + Buffer.add_char buf '\\'; + i := !i + 2 + | '"' -> + Buffer.add_char buf '"'; + i := !i + 2 + | '\'' -> + Buffer.add_char buf '\''; + i := !i + 2 + | ' ' -> + Buffer.add_char buf ' '; + i := !i + 2 + | '\n' -> + i := !i + 2; + while !i < len && (raw.[!i] = ' ' || raw.[!i] = '\t') do + incr i + done + | '0' .. '9' when !i + 3 < len -> + let code = int_of_string (String.sub raw (!i + 1) 3) in + Buffer.add_char buf (Char.chr code); + i := !i + 4 + | 'x' when !i + 3 < len -> + let code = int_of_string ("0x" ^ String.sub raw (!i + 2) 2) in + Buffer.add_char buf (Char.chr code); + i := !i + 4 + | 'o' when !i + 4 < len -> + let code = int_of_string ("0o" ^ String.sub raw (!i + 2) 3) in + Buffer.add_char buf (Char.chr code); + i := !i + 5 + | _ -> + (* Unknown escape; keep verbatim. *) + Buffer.add_char buf c; + incr i + end + else begin + Buffer.add_char buf c; + incr i + end + done; + Buffer.contents buf + +(* Encode a string as an OCaml string literal body (without surrounding + * quotes). Uses String.escaped which matches what ocamlformat / [%show] + * would emit, then we let ocamlformat handle line-wrapping later. *) +let encode_ocaml_string = String.escaped + +(* Locate ` =` then its following "..." string literal in + * `text` (starting search at `from`). Returns the (string-content-start, + * string-content-end-exclusive, opening-quote-index, closing-quote-index) + * tuple, or raises if not found. *) +let find_string_field text ~field ~from = + let re = Str.regexp ("\\b" ^ Str.quote field ^ "[ \t\n]*=[ \t\n]*\"") in + let _ = Str.search_forward re text from in + let opening = Str.match_end () - 1 in + let rec find_close i = + if i >= String.length text then + failwith ("Unterminated string for field " ^ field) + else + let c = text.[i] in + if c = '"' then i + else if c = '\\' && i + 1 < String.length text then find_close (i + 2) + else find_close (i + 1) + in + let closing = find_close (opening + 1) in + (opening + 1, closing, opening, closing) + +(* Walks a sexp tree and rewrites every (Projector (... (syntax X) ...)) + * so that X is converted from a single piece to a segment via + * Piece.unparenthesize semantics: + * - if X is (Tile ((... (label ("(" ")")) (mold (... (nibs ((shape Convex ...) (shape Convex ...))))) ... (children (()))))) + * then the new value is ; + * - otherwise the new value is (X) (a singleton segment containing X). *) +let rec patch_sexp (s : Sexplib.Sexp.t) : Sexplib.Sexp.t = + match s with + | Atom _ -> s + | List items -> ( + let items = List.map patch_sexp items in + match items with + | [ Atom "Projector"; List record ] -> + let record = + List.map + (fun field -> + match field with + | Sexplib.Sexp.List [ Atom "syntax"; value ] -> + Sexplib.Sexp.List [ Atom "syntax"; piece_to_segment value ] + | other -> other) + record + in + List [ Atom "Projector"; List record ] + | _ -> List items) + +(* Detect whether `value` is already a segment (the post-migration shape) + * vs. still a single piece (the pre-migration shape). A piece always has + * the form `( )` where is one of the variant names, + * so its first element is an Atom; a segment is a list of pieces, so its + * first element (if any) is itself a List. *) +and is_segment (value : Sexplib.Sexp.t) : bool = + match value with List [] -> true | List (List _ :: _) -> true | _ -> false + +(* Mirror Piece.unparenthesize at the sexp level. *) +and piece_to_segment (value : Sexplib.Sexp.t) : Sexplib.Sexp.t = + if is_segment value then value + else + match value with + | List [ Atom "Tile"; List tile_record ] when is_paren_tile tile_record -> ( + (* Pull the (children (())) → . *) + match tile_children tile_record with + | Some [ child_seg ] -> child_seg + | _ -> Sexplib.Sexp.List [ value ]) + | _ -> Sexplib.Sexp.List [ value ] + +and is_paren_tile (record : Sexplib.Sexp.t list) : bool = + let label = field record "label" in + let mold = field record "mold" in + match (label, mold) with + | Some (List [ Atom "("; Atom ")" ]), Some mold_value -> + (* Confirm Convex/Convex outer shape (matches Piece.unparenthesize). *) + is_convex_convex_mold mold_value + | _ -> false + +and is_convex_convex_mold (mold : Sexplib.Sexp.t) : bool = + match mold with + | List record -> ( + match field record "nibs" with + | Some (List [ List left; List right ]) -> + has_convex_shape left && has_convex_shape right + | _ -> false) + | _ -> false + +and has_convex_shape (nib : Sexplib.Sexp.t list) : bool = + match field nib "shape" with Some (Atom "Convex") -> true | _ -> false + +and tile_children (record : Sexplib.Sexp.t list) : Sexplib.Sexp.t list option = + match field record "children" with + | Some (List children) -> Some children + | _ -> None + +and field (record : Sexplib.Sexp.t list) (name : string) : Sexplib.Sexp.t option + = + let rec go = function + | [] -> None + | Sexplib.Sexp.List (Atom n :: [ v ]) :: _ when n = name -> Some v + | _ :: rest -> go rest + in + go record + +let migrate_segment_sexp (segment_text : string) : string = + let sexp = Sexplib.Sexp.of_string segment_text in + let patched = patch_sexp sexp in + Sexplib.Sexp.to_string patched + +let migrate_file (path : string) : unit = + let ic = open_in path in + let n = in_channel_length ic in + let buf = Bytes.create n in + really_input ic buf 0 n; + close_in ic; + let text = Bytes.to_string buf in + let start, stop, _, _ = find_string_field text ~field:"segment" ~from:0 in + let raw_segment_str = String.sub text start (stop - start) in + let decoded = decode_ocaml_string raw_segment_str in + let migrated = migrate_segment_sexp decoded in + if migrated = decoded then begin + Printf.printf " unchanged: %s\n" path + end + else begin + let encoded = encode_ocaml_string migrated in + let new_text = + String.sub text 0 start ^ encoded + ^ String.sub text stop (String.length text - stop) + in + let oc = open_out path in + output_string oc new_text; + close_out oc; + Printf.printf " migrated: %s\n" path + end + +let () = + let files = + if Array.length Sys.argv > 1 then List.tl (Array.to_list Sys.argv) + else ml_files + in + Printf.printf "Migrating %d files...\n" (List.length files); + List.iter + (fun f -> + try migrate_file f + with exn -> + Printf.eprintf " FAILED %s: %s\n" f (Printexc.to_string exn)) + files; + Printf.printf "Done.\n" diff --git a/src/web/app/common/ProjectorView.re b/src/web/app/common/ProjectorView.re index bc09c3c76c..1ba89209b5 100644 --- a/src/web/app/common/ProjectorView.re +++ b/src/web/app/common/ProjectorView.re @@ -194,7 +194,8 @@ let handle = (idx, action: external_action): Action.t => switch (action) { | Remove => Project(RemoveIndicated) | Escape(d) => Project(Escape(idx, d)) - | SetSyntax(f) => Project(SetSyntax(idx, f)) + | SetSyntax(term, preserve_splices) => + Project(SetSyntax(idx, term, preserve_splices)) | SampleCursor(sc) => Project(SampleCursor(sc)) | Probe(p) => Probe(p) }; @@ -300,17 +301,64 @@ let flex_code = segment, ); +/* Default fallback splice renderer: non-interactive simple_code. Used + * when a ProjectorView caller does not provide a richer ~render_splice + * callback (e.g. read-only code viewers). */ +let default_render_splice = + ( + font_metrics: FontMetrics.t, + ~projector_idx: int, + ~splice_idx: int, + splice: Base.splice, + ) + : Node.t => { + ignore(projector_idx); + ignore(splice_idx); + div( + ~attrs=[Attr.classes(["splice", "inner-editor"])], + [simple_code(~background=true, font_metrics, Sort.Any, splice.content)], + ); +}; + /* Route top-level metadata to the projector view function. */ let mk_view = ( inject: Action.t => Ui_effect.t(unit), font_metrics: FontMetrics.t, + ~render_splice: + (~projector_idx: int, ~splice_idx: int, Base.splice) => Node.t, {p, info, status, _}: Model.projector_data, projector_list: list(Id.t), ) : View.t => { let (module P) = ProjectorInit.to_module(p.kind); let idx = List.find_index(x => x == p.id, projector_list) |> Option.get; + /* Walk the projector's syntax (including tile children) collecting every + * splice regardless of nesting. Splices inside nested projectors are not + * collected — those belong to the inner projector. */ + let rec collect_splices = (seg: Base.segment): list(Base.splice) => + List.concat_map( + (p: Base.piece) => + switch (p) { + | Splice(s) => [s, ...collect_splices(s.content)] + | Tile(t) => List.concat_map(collect_splices, t.children) + | Projector(_) + | Grout(_) + | Secondary(_) => [] + }, + seg, + ); + let splices = collect_splices(p.syntax); + let splice_view = (id: Id.t) => + switch (List.find_index((s: Base.splice) => s.id == id, splices)) { + | None => span_c("splice-missing", [Node.text("?")]) + | Some(splice_idx) => + let splice = List.nth(splices, splice_idx); + render_splice(~projector_idx=idx, ~splice_idx, splice); + }; + let splice_size_map = Measured.splice_sizes(p.syntax); + let splice_size = (id: Id.t): Util.Point.t => + Measured.splice_size_of(splice_size_map, id); P.view({ model: p.model, info, @@ -328,6 +376,9 @@ let mk_view = sort, segment, ), + splice_view, + splice_size, + splices, status, }); }; @@ -340,6 +391,8 @@ let split_views = make_active, font_metrics: FontMetrics.t, ~skip_inline: bool, + ~render_splice: + (~projector_idx: int, ~splice_idx: int, Base.splice) => Node.t, {p, offside_base, measurement, status, _} as projector_data: Model.projector_data, projector_list: list(Id.t), ) @@ -355,7 +408,14 @@ let split_views = ~idx, ~kind=p.kind, ); - let views = mk_view(inject, font_metrics, projector_data, projector_list); + let views = + mk_view( + inject, + font_metrics, + ~render_splice, + projector_data, + projector_list, + ); let line_view = { let offside_view = views.offside @@ -389,9 +449,18 @@ let all = make_active, font_metrics: FontMetrics.t, ~visible: option(visible_rows)=?, + ~render_splice: + option( + (~projector_idx: int, ~splice_idx: int, Base.splice) => Node.t, + )=?, projector_data: list(Model.projector_data), projector_list: list(Id.t), ) => { + let render_splice = + Option.value( + render_splice, + ~default=default_render_splice(font_metrics), + ); /* Sorting the projectors by position tends to be a good * z-index default; projectors further to the right or * further down count as a higher. On its own this could @@ -409,6 +478,7 @@ let all = |> List.map( split_views( ~skip_inline=false, + ~render_splice, inject, make_active, font_metrics, diff --git a/src/web/app/common/RefractorView.re b/src/web/app/common/RefractorView.re index 33e4f074c9..a23ef4c121 100644 --- a/src/web/app/common/RefractorView.re +++ b/src/web/app/common/RefractorView.re @@ -94,6 +94,7 @@ let all = make_active, font_metrics, ~skip_inline=true, + ~render_splice=ProjectorView.default_render_splice(font_metrics), data, refractor_list, ) diff --git a/src/web/app/editors/code/Code.re b/src/web/app/editors/code/Code.re index ee87d28784..590404885f 100644 --- a/src/web/app/editors/code/Code.re +++ b/src/web/app/editors/code/Code.re @@ -170,7 +170,8 @@ let view = } | Grout(g) => [of_grout(g)] | Secondary(s) => [of_secondary(s)] - | Projector(pr) => [of_projector(pr)], + | Projector(pr) => [of_projector(pr)] + | Splice(s) => of_segment(s.content), seg, ); diff --git a/src/web/app/editors/code/CodeEditable.re b/src/web/app/editors/code/CodeEditable.re index 4a7f4b62e2..53dab71841 100644 --- a/src/web/app/editors/code/CodeEditable.re +++ b/src/web/app/editors/code/CodeEditable.re @@ -67,6 +67,7 @@ module Update = { ~scroll_active={ switch (action) { | Move(Point(_)) => false + | Move(SplicePoint(_, _)) => false | Select(All) => false | Select(Resize(Point(_))) => false | Move(_) @@ -229,42 +230,85 @@ module View = { }; module MouseState = Pointer.MkState(); + module SpliceMouseState = Pointer.MkState(); + let pointer_target = (current_target: Js.opt(Js.t(Dom_html.element))) => + current_target + |> Js.Opt.get(_, _ => failwith("pointer: no currentTarget")); + + module SplicePointerCapture = { + let set = (target, pointer_id) => + JsUtil.setPointerCapture(pointer_target(target), pointer_id); + + let release = (target, pointer_id) => { + let target = pointer_target(target); + if (JsUtil.hasPointerCapture(target, pointer_id)) { + JsUtil.releasePointerCapture(target, pointer_id); + }; + }; + }; + + /* Top-level "main editor" decorations. When the caret is inside a + * splice, caret-anchored decorations (caret, selection, indicated arm, + * backpack) are rendered by the splice's own viewport instead; we + * suppress them here to avoid drawing ghost decorations at splice-local + * pixel coords inside the main code container. Color highlights are + * kept because they come from globals and may legitimately target + * top-level pieces. */ let deco = ( ~expand_selection=false, ~syntax: CachedSyntax.t, ~globals: Globals.t, z: Zipper.t, - ) => [ - CaretDec.view( - ~measured=syntax.measured, - ~font_metrics=globals.font_metrics, - z, - ), - Arms.Indicated.term(~font_metrics=globals.font_metrics, ~syntax, z), - ( - expand_selection - ? Highlight.selection_expanded(~term_data=syntax.term_data) - : Highlight.selection - )( - ~measured=syntax.measured, - ~shape_map=syntax.shape_map, - ~font_metrics=globals.font_metrics, - z, - ), - Backpack.view( - ~font_metrics=globals.font_metrics, - ~measured=syntax.measured, - ~cached_backpack=syntax.cached_backpack, - z, - ), - Highlight.colors( - ~font_metrics=globals.font_metrics, - ~syntax, - globals.color_highlights, - ), - ]; + ) => { + let caret_in_splice = Option.is_some(Zipper.splice_context(z)); + let own_ids = + Segment.own_ids(syntax.segment) + |> List.fold_left((m, id) => Id.Map.add(id, (), m), Id.Map.empty); + let indicated_in_main = + switch (Haz3lcore.Indicated.piece(z)) { + | Some((p, _, _)) => Id.Map.mem(Piece.id(p), own_ids) + | None => false + }; + [ + caret_in_splice + ? Node.div(~attrs=[Attr.classes(["caret"])], []) + : CaretDec.view( + ~measured=syntax.measured, + ~font_metrics=globals.font_metrics, + z, + ), + caret_in_splice || !indicated_in_main + ? Node.div(~attrs=[Attr.classes(["indication"])], []) + : Arms.Indicated.term(~font_metrics=globals.font_metrics, ~syntax, z), + caret_in_splice + ? Node.div(~attrs=[Attr.classes(["selects"])], []) + : ( + expand_selection + ? Highlight.selection_expanded(~term_data=syntax.term_data) + : Highlight.selection + )( + ~measured=syntax.measured, + ~shape_map=syntax.shape_map, + ~font_metrics=globals.font_metrics, + z, + ), + caret_in_splice + ? Node.div(~attrs=[Attr.classes(["backpack"])], []) + : Backpack.view( + ~font_metrics=globals.font_metrics, + ~measured=syntax.measured, + ~cached_backpack=syntax.cached_backpack, + z, + ), + Highlight.colors( + ~font_metrics=globals.font_metrics, + ~syntax, + globals.color_highlights, + ), + ]; + }; let view = ( @@ -353,12 +397,252 @@ module View = { List.map(fst, zipper.refractors.manuals) @ List.map(fst, Id.Map.to_list(zipper.refractors.autos.ephemerals)), ); + /* A splice's inner editor viewport. Renders the splice's content as + * a full editor surface: code tokens, caret-anchored decorations + * (caret/selection/indicated/backpack) when the caret is in this + * splice, and errors/warnings restricted to pieces owned by the + * splice. Pointer handlers use the splice div's own bounding rect + * so clicks land at splice-local coordinates. */ + let render_splice = + (~projector_idx: int, ~splice_idx: int, splice: Base.splice): Node.t => { + let syntax = model.editor.syntax; + let splice_shape_map = ProjectorCore.Shape.Map.empty; + let splice_refractor_shape_map = Id.Map.empty; + let splice_measured = + Measured.of_segment( + splice.content, + splice_shape_map, + splice_refractor_shape_map, + ); + let splice_syntax: CachedSyntax.t = { + ...syntax, + segment: splice.content, + measured: splice_measured, + shape_map: splice_shape_map, + cached_backpack: Segment.global_missing_shards(splice.content), + }; + let own_ids_list = Segment.own_ids(splice.content); + let own_ids = + List.fold_left( + (m, id) => Id.Map.add(id, (), m), + Id.Map.empty, + own_ids_list, + ); + let in_me = id => Id.Map.mem(id, own_ids); + let caret_here = + selected && Zipper.splice_context(zipper) == Some(splice.id); + + let code_text = + CodeViewable.view( + ~globals, + ~measured=splice_syntax.measured, + ~term_data=syntax.term_data, + ~buffer_ids= + Haz3lcore.Selection.is_buffer(zipper.selection) + ? syntax.selection_ids : [], + ~segment=splice.content, + ~shape_map=splice_syntax.shape_map, + ~refractor_shape_map=splice_refractor_shape_map, + ); + + let edit_deco_nodes = + selected + ? { + let caret_nodes = + caret_here + ? [ + CaretDec.view( + ~measured=splice_syntax.measured, + ~font_metrics=globals.font_metrics, + zipper, + ), + ] + : []; + let indicated_nodes = + switch (Haz3lcore.Indicated.piece(zipper)) { + | Some((p, _, _)) + when in_me(Piece.id(p)) && zipper.selection.content == [] => [ + Arms.Indicated.term( + ~font_metrics=globals.font_metrics, + ~syntax=splice_syntax, + zipper, + ), + ] + | _ => [] + }; + let selection_nodes = + caret_here && zipper.selection.content != [] + ? [ + Highlight.selection( + ~measured=splice_syntax.measured, + ~shape_map=splice_syntax.shape_map, + ~font_metrics=globals.font_metrics, + zipper, + ), + ] + : []; + let backpack_nodes = + caret_here + ? [ + Backpack.view( + ~font_metrics=globals.font_metrics, + ~measured=splice_syntax.measured, + ~cached_backpack=splice_syntax.cached_backpack, + zipper, + ), + ] + : []; + caret_nodes @ indicated_nodes @ selection_nodes @ backpack_nodes; + } + : []; + + let own_error_ids = List.filter(in_me, model.statics.error_ids); + let own_warning_ids = + globals.settings.core.display_warnings + ? List.filter(in_me, model.statics.warning_ids) : []; + let error_decos = + Arms.Errors.of_ids( + ~font_metrics=globals.font_metrics, + ~syntax=splice_syntax, + own_error_ids, + ); + let warning_decos = + Arms.Errors.of_ids( + ~is_warning=true, + ~font_metrics=globals.font_metrics, + ~syntax=splice_syntax, + own_warning_ids, + ); + + let splice_surface = (e: Pointer.Event.t) => + e.current_target + |> pointer_target + |> JsUtil.get_child_with_class(_, "splice-editor-surface") + |> Option.get; + let splice_loc = (e: Pointer.Event.t) => { + let goal = + FontMetrics.get_goal( + ~font_metrics=globals.font_metrics, + splice_surface(e), + e.loc, + ); + Point.{ + ...goal, + col: max(0, goal.col), + }; + }; + let handle_splice_pointerdown = evt => { + let e = Pointer.Event.mk(evt); + let goal = splice_loc(e); + switch (e) { + | {button: Left, shift: Down, _} => + Effect.Many([ + Effect.Stop_propagation, + Effect.Prevent_default, + signal(MakeActive), + inject( + Perform( + Move(SplicePoint((projector_idx, splice_idx), goal)), + ), + ), + inject( + Perform( + Select( + Resize(SplicePoint((projector_idx, splice_idx), goal)), + ), + ), + ), + ]) + | {button: Left, _} => + SpliceMouseState.pointerdown(goal); + SplicePointerCapture.set( + e.current_target, + Pointer.Event.id_of(evt), + ); + Effect.Many([ + Effect.Stop_propagation, + Effect.Prevent_default, + signal(MakeActive), + inject( + Perform( + Move(SplicePoint((projector_idx, splice_idx), goal)), + ), + ), + ]); + | _ => Effect.Ignore + }; + }; + let handle_splice_pointermove = evt => { + let e = Pointer.Event.mk(evt); + let left_button_held = e.buttons land 1 != 0; + if (!left_button_held && SpliceMouseState.is_button_down()) { + SpliceMouseState.reset(); + Effect.Many([Effect.Stop_propagation, Effect.Prevent_default]); + } else if (left_button_held && SpliceMouseState.is_button_down()) { + let goal = splice_loc(e); + if (Point.equals(goal, SpliceMouseState.get_down_loc())) { + Effect.Many([Effect.Stop_propagation, Effect.Prevent_default]); + } else { + Effect.Many([ + Effect.Stop_propagation, + Effect.Prevent_default, + inject( + Perform( + Select( + Resize(SplicePoint((projector_idx, splice_idx), goal)), + ), + ), + ), + ]); + }; + } else { + Effect.Ignore; + }; + }; + let handle_splice_pointerup = evt => { + let e = Pointer.Event.mk(evt); + SpliceMouseState.pointerup(splice_loc(e)); + SplicePointerCapture.release( + e.current_target, + Pointer.Event.id_of(evt), + ); + Effect.Many([Effect.Stop_propagation, Effect.Prevent_default]); + }; + + Node.div( + ~attrs=[ + Attr.classes([ + "splice", + "inner-editor", + "splice-container", + "inline-editor-wrapper", + ]), + Attr.on_pointerdown(handle_splice_pointerdown), + Attr.on_mousemove(handle_splice_pointermove), + Attr.on_pointerup(handle_splice_pointerup), + ], + [ + Node.div( + ~attrs=[Attr.classes(["splice-editor-surface"])], + [ + code_text, + Node.div( + ~attrs=[Attr.classes(["code-deco"])], + edit_deco_nodes @ [warning_decos, error_decos], + ), + ], + ), + ], + ); + }; + let projectors = ProjectorView.all( x => inject(Perform(x)), signal(MakeActive), globals.font_metrics, ~visible?, + ~render_splice, ProjectorView.Model.mk( ~syntax=model.editor.syntax, ~indicated=Indicated.piece(zipper), diff --git a/src/web/app/editors/code/CodeWithStatics.re b/src/web/app/editors/code/CodeWithStatics.re index 392a6101ee..7594a960fb 100644 --- a/src/web/app/editors/code/CodeWithStatics.re +++ b/src/web/app/editors/code/CodeWithStatics.re @@ -156,11 +156,18 @@ module View = { ~shape_map, ~refractor_shape_map=Id.Map.empty //Id.Map.map(_ => 2, z.refractors.map), ); + /* Errors/warnings on pieces inside splices are rendered by their + * owning splice viewport at splice-local coords; restrict the main + * viewport to the top-level segment's own ids. */ + let main_own_ids = + Segment.own_ids(segment) + |> List.fold_left((m, id) => Id.Map.add(id, (), m), Id.Map.empty); + let in_main = id => Id.Map.mem(id, main_own_ids); let error_decos = Arms.Errors.of_ids( ~font_metrics=globals.font_metrics, ~syntax=model.editor.syntax, - model.statics.error_ids, + List.filter(in_main, model.statics.error_ids), ); let warning_ids = globals.settings.core.display_warnings ? model.statics.warning_ids : []; @@ -169,7 +176,7 @@ module View = { ~is_warning=true, ~font_metrics=globals.font_metrics, ~syntax=model.editor.syntax, - warning_ids, + List.filter(in_main, warning_ids), ); let container_classes = ["code-container"] diff --git a/src/web/app/editors/code/ContextMenu.re b/src/web/app/editors/code/ContextMenu.re index b640b02fcc..5ff464a158 100644 --- a/src/web/app/editors/code/ContextMenu.re +++ b/src/web/app/editors/code/ContextMenu.re @@ -366,13 +366,12 @@ module Projectors = { | [] => switch (Indicated.for_index(z)) { | Some((Projector({syntax, _}), _, _)) => - MakeTerm.for_projection(Piece.unparenthesize(syntax)) + MakeTerm.for_projection(syntax) | _ => let* info = Indicated.ci_of(z, info_map); Language.Info.any_of(info); } - | [Projector({syntax, _})] => - MakeTerm.for_projection(Piece.unparenthesize(syntax)) + | [Projector({syntax, _})] => MakeTerm.for_projection(syntax) | seg => MakeTerm.for_projection(seg) }; @@ -386,7 +385,9 @@ module Projectors = { : option(ProjectorCore.Kind.t) => { let (module P) = ProjectorInit.to_module(kind); let* term = target_term(z, info_map); - let+ _ = P.init(term); + /* Pass an empty segment: applicability checks depend on the parsed + * term only; no init actually stores a projector here. */ + let+ _ = P.init(term, []); kind; }; @@ -419,6 +420,7 @@ module Projectors = { | TextArea => "Text" | Csv => "CSV" | Livelit => "Livelit" + | VList => "VList" | Probe => "Probe" /* shouldn't appear in menu */ }; diff --git a/src/web/app/editors/decoration/Arms.re b/src/web/app/editors/decoration/Arms.re index 4b62894b06..7fcdc6df2a 100644 --- a/src/web/app/editors/decoration/Arms.re +++ b/src/web/app/editors/decoration/Arms.re @@ -343,7 +343,8 @@ let term = (~syntax: CachedSyntax.t, ~font_metrics: FontMetrics.t) => let term_range = (~syntax: CachedSyntax.t, p: Piece.t) => { switch (p) { - | Secondary(_) => None + | Secondary(_) + | Splice(_) => None | Grout(_) | Projector(_) | Tile(_) => @@ -412,7 +413,8 @@ module Indicated = { : list(Node.t) => { switch (p) { | Grout(_) - | Secondary(_) => [] + | Secondary(_) + | Splice(_) => [] | Projector(p) => switch (Measured.find_pr_opt(p, syntax.measured)) { | Some(measurement) => [ @@ -423,7 +425,13 @@ module Indicated = { tips: p |> ProjectorCore.shapes |> ShardDec.tips_of_shapes, }, [ - p.syntax |> Piece.sort |> fst |> Sort.to_string, + ( + switch (p.syntax) { + | [] => Sort.Any + | [head, ..._] => Piece.sort(head) |> fst + } + ) + |> Sort.to_string, "caret", "indicated", ], diff --git a/src/web/app/editors/decoration/Highlight.re b/src/web/app/editors/decoration/Highlight.re index acf6dbc191..7176f25ab6 100644 --- a/src/web/app/editors/decoration/Highlight.re +++ b/src/web/app/editors/decoration/Highlight.re @@ -25,6 +25,7 @@ let shard_svg = None, ) | Projector(p) => p |> ProjectorCore.shapes |> ShardDec.tips_of_shapes + | Splice(_) => (Some(Nib.Shape.Convex), Some(Nib.Shape.Convex)) }, ); @@ -84,6 +85,7 @@ let rows_of_segment = switch (p) { | Tile(t) => of_tile(~start_shape, t) | Projector(p) => of_projector(~start_shape, p) + | Splice(_) => [None] | Grout(g) => [Some(shard_svg(~start_shape, find_g(g), p))] | Secondary(w) when Secondary.is_linebreak(w) => [None] | Secondary(w) => [ diff --git a/src/web/app/explainthis/ExplainThis.re b/src/web/app/explainthis/ExplainThis.re index 57ad09a911..e03b14b4e2 100644 --- a/src/web/app/explainthis/ExplainThis.re +++ b/src/web/app/explainthis/ExplainThis.re @@ -398,6 +398,7 @@ let example_view = let rec bypass_parens_and_annot_pat = (pat: Pat.t) => { switch (pat.term) { | Parens(p) + | Splice(p) | Asc(p, _) => bypass_parens_and_annot_pat(p) | _ => pat }; @@ -405,21 +406,24 @@ let rec bypass_parens_and_annot_pat = (pat: Pat.t) => { let rec bypass_parens_pat = (pat: Pat.t) => { switch (pat.term) { - | Parens(p) => bypass_parens_pat(p) + | Parens(p) + | Splice(p) => bypass_parens_pat(p) | _ => pat }; }; let rec bypass_parens_exp = (exp: Exp.t) => { switch (exp.term) { - | Parens(e) => bypass_parens_exp(e) + | Parens(e) + | Splice(e) => bypass_parens_exp(e) | _ => exp }; }; let rec bypass_parens_typ = (typ: Typ.t) => { switch (typ.term) { - | Parens(t) => bypass_parens_typ(t) + | Parens(t) + | Splice(t) => bypass_parens_typ(t) | _ => typ }; }; @@ -1164,6 +1168,7 @@ let get_doc = | Label(_) | ExplicitNonlabel | Projector(_) + | Splice(_) | Asc(_) => default // Shouldn't get hit? }; | Label(name) => @@ -1750,6 +1755,7 @@ let get_doc = | Invalid(_) => default // Shouldn't get hit | Parens(_) | Projector(_) + | Splice(_) | Asc(_) => default // Shouldn't get hit? }; | Theorem(pat, thm, body) => @@ -2205,6 +2211,7 @@ let get_doc = | Module(_) => message_single(ModuleExp.single) | ModuleExp(_) => message_single(ModuleKeywordExp.single) | Projector(_, e) => get_message_exp(e.term) + | Splice(e) => get_message_exp(e.term) }; get_message_exp(term.term); | Some(InfoPat({term, _})) => @@ -2467,7 +2474,8 @@ let get_doc = ); | Invalid(_) => simple("Not a valid pattern") | Parens(_) - | Projector(_) => + | Projector(_) + | Splice(_) => // Shouldn't be hit? default } @@ -2705,7 +2713,8 @@ let get_doc = | ProdExtension(_) | Parens(_) | Sig(_) => message_single(SigTyp.single) - | Projector(_) => default + | Projector(_) + | Splice(_) => default } | Some(InfoTPat(info)) => switch (info.term.term) { diff --git a/src/web/exercises/Exercise.re b/src/web/exercises/Exercise.re index bef37371ff..81cb1fb60d 100644 --- a/src/web/exercises/Exercise.re +++ b/src/web/exercises/Exercise.re @@ -699,6 +699,7 @@ let rec append_exp = (e1: Language.Exp.t, e2: Language.Exp.t): Language.Exp.t => | HintedTest(_) | Parens(_) | Projector(_) + | Splice(_) | Cons(_) | ListConcat(_) | LivelitName(_) diff --git a/src/web/exercises/SyntaxTest.re b/src/web/exercises/SyntaxTest.re index dc30abcce6..f12d68ee7f 100644 --- a/src/web/exercises/SyntaxTest.re +++ b/src/web/exercises/SyntaxTest.re @@ -31,7 +31,8 @@ let rec find_var_upat = (name: string, upat: Pat.t): bool => { | Tuple(l) => List.fold_left((acc, up) => {acc || find_var_upat(name, up)}, false, l) | Parens(up) - | Projector(_, up) => find_var_upat(name, up) + | Projector(_, up) + | Splice(up) => find_var_upat(name, up) | Ap(up1, up2) => find_var_upat(name, up1) || find_var_upat(name, up2) | Asc(up, _) => find_var_upat(name, up) }; @@ -48,11 +49,14 @@ let rec find_in_let = (name: string, upat: Pat.t, def: Exp.t, l: list(Exp.t)): list(Exp.t) => { switch (upat.term, def.term) { | (Parens(up), Parens(ue)) - | (Projector(_, up), Projector(_, ue)) => find_in_let(name, up, ue, l) + | (Projector(_, up), Projector(_, ue)) + | (Splice(up), Splice(ue)) => find_in_let(name, up, ue, l) | (Parens(up), _) - | (Projector(_, up), _) => find_in_let(name, up, def, l) + | (Projector(_, up), _) + | (Splice(up), _) => find_in_let(name, up, def, l) | (_, Parens(ue)) - | (_, Projector(_, ue)) => find_in_let(name, upat, ue, l) + | (_, Projector(_, ue)) + | (_, Splice(ue)) => find_in_let(name, upat, ue, l) | (Asc(up, _), _) => find_in_let(name, up, def, l) | (Var(x), Fun(_)) => x == name ? [def, ...l] : l | (TupLabel(_, up), TupLabel(_, ue)) => find_in_let(name, up, ue, l) @@ -102,6 +106,7 @@ let rec find_fn = (name: string, uexp: Exp.t, l: list(Exp.t)): list(Exp.t) => { | TypAp(u1, _) | Parens(u1) | Projector(_, u1) + | Splice(u1) | Asc(u1, _) | UnOp(_, u1) | TyAlias(_, _, u1) @@ -188,6 +193,7 @@ let rec var_mention_upat = (name: string, upat: Pat.t): bool => { ) | Parens(up) | Projector(_, up) + | Splice(up) | TupLabel(_, up) => var_mention_upat(name, up) | Ap(up1, up2) => var_mention_upat(name, up1) || var_mention_upat(name, up2) @@ -256,6 +262,7 @@ let rec var_mention = (name: string, uexp: Exp.t): bool => { | HintedTest(u, _) | Parens(u) | Projector(_, u) + | Splice(u) | UnOp(_, u) | TyAlias(_, _, u) | Use(_, u) @@ -347,6 +354,7 @@ let rec var_applied = (name: string, uexp: Exp.t): bool => { | HintedTest(u, _) | Parens(u) | Projector(_, u) + | Splice(u) | UnOp(_, u) | TyAlias(_, _, u) | Use(_, u) @@ -475,7 +483,8 @@ let rec tail_check = (name: string, uexp: Exp.t): bool => { | TypFun(_, u, _) | TypAp(u, _) | Parens(u) - | Projector(_, u) => tail_check(name, u) + | Projector(_, u) + | Splice(u) => tail_check(name, u) | UnOp(_, u) => !var_mention(name, u) | Ap(_, u1, u2) => var_mention(name, u2) ? false : tail_check(name, u1) | DeferredAp(fn, args) => diff --git a/src/web/exercises/Tutorial.re b/src/web/exercises/Tutorial.re index b9f620a465..a72316a588 100644 --- a/src/web/exercises/Tutorial.re +++ b/src/web/exercises/Tutorial.re @@ -311,6 +311,7 @@ let rec append_exp = (e1: Language.Exp.t, e2: Language.Exp.t): Language.Exp.t => | HintedTest(_) | Parens(_) | Projector(_) + | Splice(_) | Cons(_) | ListConcat(_) | LivelitName(_) diff --git a/src/web/exercises/examples/Ex_OddlyRecursive.ml b/src/web/exercises/examples/Ex_OddlyRecursive.ml index 639c6531b3..d3bbcce9c8 100644 --- a/src/web/exercises/examples/Ex_OddlyRecursive.ml +++ b/src/web/exercises/examples/Ex_OddlyRecursive.ml @@ -138,111 +138,113 @@ let exercise : Exercise.spec = [] ); ancestors = [ - ( { - id = Id.mk (); - label = [ "let"; "="; "in" ]; - mold = - { - out = Exp; - in_ = [ Pat; Exp ]; - nibs = - ( { shape = Convex; sort = Exp }, - { shape = Concave 14; sort = Exp } ); - }; - shards = ([ 0; 1 ], [ 2 ]); - children = - ( [ - [ - Secondary { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ "not" ]; - mold = - { - out = Pat; - in_ = []; - nibs = - ( { shape = Convex; sort = Pat }, - { shape = Convex; sort = Pat } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ ":" ]; - mold = - { - out = Pat; - in_ = []; - nibs = - ( { shape = Concave 10; sort = Pat }, - { shape = Concave 10; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ "Bool" ]; - mold = - { - out = Typ; - in_ = []; - nibs = - ( { shape = Convex; sort = Typ }, - { shape = Convex; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ "->" ]; - mold = - { - out = Typ; - in_ = []; - nibs = - ( { shape = Concave 6; sort = Typ }, - { shape = Concave 6; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ "Bool" ]; - mold = - { - out = Typ; - in_ = []; - nibs = - ( { shape = Convex; sort = Typ }, - { shape = Convex; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - ]; - ], - [] ); - }, + ( Tile + { + id = Id.mk (); + label = [ "let"; "="; "in" ]; + mold = + { + out = Exp; + in_ = [ Pat; Exp ]; + nibs = + ( { shape = Convex; sort = Exp }, + { shape = Concave 14; sort = Exp } ); + }; + shards = ([ 0; 1 ], [ 2 ]); + children = + ( [ + [ + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ "not" ]; + mold = + { + out = Pat; + in_ = []; + nibs = + ( { shape = Convex; sort = Pat }, + { shape = Convex; sort = Pat } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ ":" ]; + mold = + { + out = Pat; + in_ = []; + nibs = + ( { shape = Concave 10; sort = Pat }, + { shape = Concave 10; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ "Bool" ]; + mold = + { + out = Typ; + in_ = []; + nibs = + ( { shape = Convex; sort = Typ }, + { shape = Convex; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ "->" ]; + mold = + { + out = Typ; + in_ = []; + nibs = + ( { shape = Concave 6; sort = Typ }, + { shape = Concave 6; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ "Bool" ]; + mold = + { + out = Typ; + in_ = []; + nibs = + ( { shape = Convex; sort = Typ }, + { shape = Convex; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + ]; + ], + [] ); + }, ( [], [ Secondary { id = Id.mk (); content = Whitespace " " }; @@ -674,103 +676,105 @@ let exercise : Exercise.spec = [] ); ancestors = [ - ( { - id = Id.mk (); - label = [ "let"; "="; "in" ]; - mold = - { - out = Exp; - in_ = [ Pat; Exp ]; - nibs = - ( { shape = Convex; sort = Exp }, - { shape = Concave 14; sort = Exp } ); - }; - shards = ([ 0; 1 ], [ 2 ]); - children = - ( [ - [ - Secondary { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ "odd" ]; - mold = - { - out = Pat; - in_ = []; - nibs = - ( { shape = Convex; sort = Pat }, - { shape = Convex; sort = Pat } ); - }; - shards = [ 0 ]; - children = []; - }; - Tile - { - id = Id.mk (); - label = [ ":" ]; - mold = - { - out = Pat; - in_ = []; - nibs = - ( { shape = Concave 10; sort = Pat }, - { shape = Concave 10; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Tile - { - id = Id.mk (); - label = [ "Int" ]; - mold = - { - out = Typ; - in_ = []; - nibs = - ( { shape = Convex; sort = Typ }, - { shape = Convex; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Tile - { - id = Id.mk (); - label = [ "->" ]; - mold = - { - out = Typ; - in_ = []; - nibs = - ( { shape = Concave 6; sort = Typ }, - { shape = Concave 6; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Tile - { - id = Id.mk (); - label = [ "Bool" ]; - mold = - { - out = Typ; - in_ = []; - nibs = - ( { shape = Convex; sort = Typ }, - { shape = Convex; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - ]; - ], - [] ); - }, + ( Tile + { + id = Id.mk (); + label = [ "let"; "="; "in" ]; + mold = + { + out = Exp; + in_ = [ Pat; Exp ]; + nibs = + ( { shape = Convex; sort = Exp }, + { shape = Concave 14; sort = Exp } ); + }; + shards = ([ 0; 1 ], [ 2 ]); + children = + ( [ + [ + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ "odd" ]; + mold = + { + out = Pat; + in_ = []; + nibs = + ( { shape = Convex; sort = Pat }, + { shape = Convex; sort = Pat } ); + }; + shards = [ 0 ]; + children = []; + }; + Tile + { + id = Id.mk (); + label = [ ":" ]; + mold = + { + out = Pat; + in_ = []; + nibs = + ( { shape = Concave 10; sort = Pat }, + { shape = Concave 10; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Tile + { + id = Id.mk (); + label = [ "Int" ]; + mold = + { + out = Typ; + in_ = []; + nibs = + ( { shape = Convex; sort = Typ }, + { shape = Convex; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Tile + { + id = Id.mk (); + label = [ "->" ]; + mold = + { + out = Typ; + in_ = []; + nibs = + ( { shape = Concave 6; sort = Typ }, + { shape = Concave 6; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Tile + { + id = Id.mk (); + label = [ "Bool" ]; + mold = + { + out = Typ; + in_ = []; + nibs = + ( { shape = Convex; sort = Typ }, + { shape = Convex; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + ]; + ], + [] ); + }, ( [], [ Secondary { id = Id.mk (); content = Whitespace " " }; diff --git a/src/web/exercises/examples/Ex_RecursiveFibonacci.ml b/src/web/exercises/examples/Ex_RecursiveFibonacci.ml index 47b0a82a27..7623d1b4d4 100644 --- a/src/web/exercises/examples/Ex_RecursiveFibonacci.ml +++ b/src/web/exercises/examples/Ex_RecursiveFibonacci.ml @@ -355,109 +355,111 @@ let exercise : Exercise.spec = [ Secondary { id = Id.mk (); content = Whitespace "\n" } ] ); ancestors = [ - ( { - id = Id.mk (); - label = [ "let"; "="; "in" ]; - mold = - { - out = Exp; - in_ = [ Pat; Exp ]; - nibs = - ( { shape = Convex; sort = Exp }, - { shape = Concave 14; sort = Exp } ); - }; - shards = ([ 0; 1 ], [ 2 ]); - children = - ( [ - [ - Secondary { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ "fib" ]; - mold = - { - out = Pat; - in_ = []; - nibs = - ( { shape = Convex; sort = Pat }, - { shape = Convex; sort = Pat } ); - }; - shards = [ 0 ]; - children = []; - }; - Tile - { - id = Id.mk (); - label = [ ":" ]; - mold = - { - out = Pat; - in_ = []; - nibs = - ( { shape = Concave 10; sort = Pat }, - { shape = Concave 10; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ "Int" ]; - mold = - { - out = Typ; - in_ = []; - nibs = - ( { shape = Convex; sort = Typ }, - { shape = Convex; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ "->" ]; - mold = - { - out = Typ; - in_ = []; - nibs = - ( { shape = Concave 6; sort = Typ }, - { shape = Concave 6; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - Tile - { - id = Id.mk (); - label = [ "Int" ]; - mold = - { - out = Typ; - in_ = []; - nibs = - ( { shape = Convex; sort = Typ }, - { shape = Convex; sort = Typ } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { id = Id.mk (); content = Whitespace " " }; - ]; - ], - [] ); - }, + ( Tile + { + id = Id.mk (); + label = [ "let"; "="; "in" ]; + mold = + { + out = Exp; + in_ = [ Pat; Exp ]; + nibs = + ( { shape = Convex; sort = Exp }, + { shape = Concave 14; sort = Exp } ); + }; + shards = ([ 0; 1 ], [ 2 ]); + children = + ( [ + [ + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ "fib" ]; + mold = + { + out = Pat; + in_ = []; + nibs = + ( { shape = Convex; sort = Pat }, + { shape = Convex; sort = Pat } ); + }; + shards = [ 0 ]; + children = []; + }; + Tile + { + id = Id.mk (); + label = [ ":" ]; + mold = + { + out = Pat; + in_ = []; + nibs = + ( { shape = Concave 10; sort = Pat }, + { shape = Concave 10; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ "Int" ]; + mold = + { + out = Typ; + in_ = []; + nibs = + ( { shape = Convex; sort = Typ }, + { shape = Convex; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ "->" ]; + mold = + { + out = Typ; + in_ = []; + nibs = + ( { shape = Concave 6; sort = Typ }, + { shape = Concave 6; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + Tile + { + id = Id.mk (); + label = [ "Int" ]; + mold = + { + out = Typ; + in_ = []; + nibs = + ( { shape = Convex; sort = Typ }, + { shape = Convex; sort = Typ } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { id = Id.mk (); content = Whitespace " " }; + ]; + ], + [] ); + }, ( [], [ Secondary { id = Id.mk (); content = Whitespace " " }; diff --git a/src/web/exercises/examples/ReverseReverse.ml b/src/web/exercises/examples/ReverseReverse.ml index d767715741..18f356caaf 100644 --- a/src/web/exercises/examples/ReverseReverse.ml +++ b/src/web/exercises/examples/ReverseReverse.ml @@ -664,62 +664,63 @@ let exercise : TheoremExerciseSpec.t = ] ); ancestors = [ - ( { - id = - Option.get - (Haz3lcore.Id.of_string - "f2130f6f-a452-481b-ba9a-c40e0d2346aa"); - label = [ "let"; "="; "in" ]; - mold = - { - out = Exp; - in_ = [ Pat; Exp ]; - nibs = - ( { shape = Convex; sort = Exp }, - { shape = Concave 40; sort = Exp } ); - }; - shards = ([ 0; 1 ], [ 2 ]); - children = - ( [ - [ - Secondary - { - id = - Option.get - (Haz3lcore.Id.of_string - "933b3eb9-1846-492f-931e-6b78c91fe18b"); - content = Whitespace " "; - }; - Tile - { - id = - Option.get - (Haz3lcore.Id.of_string - "82fc27a4-5211-485c-9f5a-f3493c21fe34"); - label = [ "snoc" ]; - mold = - { - out = Pat; - in_ = []; - nibs = - ( { shape = Convex; sort = Pat }, - { shape = Convex; sort = Pat } ); - }; - shards = [ 0 ]; - children = []; - }; - Secondary - { - id = - Option.get - (Haz3lcore.Id.of_string - "c80ccddc-c6cd-431a-9fe8-8c51b367f6f3"); - content = Whitespace " "; - }; - ]; - ], - [] ); - }, + ( Tile + { + id = + Option.get + (Haz3lcore.Id.of_string + "f2130f6f-a452-481b-ba9a-c40e0d2346aa"); + label = [ "let"; "="; "in" ]; + mold = + { + out = Exp; + in_ = [ Pat; Exp ]; + nibs = + ( { shape = Convex; sort = Exp }, + { shape = Concave 40; sort = Exp } ); + }; + shards = ([ 0; 1 ], [ 2 ]); + children = + ( [ + [ + Secondary + { + id = + Option.get + (Haz3lcore.Id.of_string + "933b3eb9-1846-492f-931e-6b78c91fe18b"); + content = Whitespace " "; + }; + Tile + { + id = + Option.get + (Haz3lcore.Id.of_string + "82fc27a4-5211-485c-9f5a-f3493c21fe34"); + label = [ "snoc" ]; + mold = + { + out = Pat; + in_ = []; + nibs = + ( { shape = Convex; sort = Pat }, + { shape = Convex; sort = Pat } ); + }; + shards = [ 0 ]; + children = []; + }; + Secondary + { + id = + Option.get + (Haz3lcore.Id.of_string + "c80ccddc-c6cd-431a-9fe8-8c51b367f6f3"); + content = Whitespace " "; + }; + ]; + ], + [] ); + }, ( [], [ Secondary diff --git a/src/web/init/docs/Cards.ml b/src/web/init/docs/Cards.ml index ae73bc51a9..0f8127029b 100644 --- a/src/web/init/docs/Cards.ml +++ b/src/web/init/docs/Cards.ml @@ -249,10 +249,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 2bc60158-e2b6-44bb-a58d-76bbb1bd97ea)(content(Whitespace\" \ \"))))(Projector((id 192f39eb-db78-441e-b8a9-4057324995ae)(kind \ - Card)(syntax(Tile((id \ - b46c3b22-0b72-494b-b07e-702e4d0c92dd)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Card)(syntax((Tile((id \ f204270c-818b-40a4-905c-32a7833318c8)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Tile((id \ @@ -264,7 +261,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Tile((id \ 7c26f712-74f9-4443-ad2c-09984174cf31)(label(Jack))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"((mode \ + Exp))))))(shards(0))(children()))))))))))(model\"((mode \ Show))\")))(Secondary((id \ 2e0bcbde-1a2f-4add-aa45-d193614a1fbd)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -294,13 +291,9 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 6ab6ef49-6700-4237-95b6-5095fc693e7c)(content(Whitespace\" \ \"))))(Projector((id 73f4021f-5e6d-4039-a753-e5d0ed1eb440)(kind \ - Card)(syntax(Tile((id \ - b88e8374-a0f4-4d2e-9a26-e244e1fe9f45)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ - 8660251e-f57b-4dbf-8184-d943d636f386)(label([ ]))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Card)(syntax((Tile((id 8660251e-f57b-4dbf-8184-d943d636f386)(label([ \ + ]))(mold((out Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape \ + Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ 74878125-5a57-423c-82b3-e5f781c8ccc4)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Tile((id \ @@ -543,7 +536,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Tile((id \ 3708a71b-e084-47b9-b403-364f5161490f)(label(Ace))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))(model\"((mode \ + Exp))))))(shards(0))(children())))))))))))))))(model\"((mode \ Show))\")))(Secondary((id \ a8c5f47f-1f8f-43ab-8544-9b103e3fe52a)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -600,13 +593,9 @@ let out : string * Haz3lcore.PersistentSegment.t = 46))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 44ce11f4-3e8a-4d5e-8f20-63e8d947e91a)(content(Whitespace\" \ \"))))(Projector((id 0904f80d-325d-4921-9447-75a16b8d346b)(kind \ - Card)(syntax(Tile((id \ - ee48a70f-2201-4481-867c-aadb5ea57ad8)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0 1))(children(((Tile((id \ - d7aa5ff7-2916-4b71-a8ad-b8032ccd4aad)(label([ ]))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0 1))(children(((Tile((id \ + Card)(syntax((Tile((id d7aa5ff7-2916-4b71-a8ad-b8032ccd4aad)(label([ \ + ]))(mold((out Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ ba9abd54-6da1-4d32-bb60-08aaac0649d1)(label(\"(\"\")\"))(mold((out \ Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ Pat))))))(shards(0 1))(children(((Tile((id \ @@ -696,7 +685,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Tile((id \ add6da64-c763-40df-9be5-814527130789)(label(_))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0))(children())))))))))))))))))))(model\"((mode \ + Pat))))))(shards(0))(children())))))))))))))))(model\"((mode \ Show))\")))(Secondary((id \ c58fca90-1412-4478-a0b4-cc8d1eccb9c9)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -711,13 +700,9 @@ let out : string * Haz3lcore.PersistentSegment.t = 46))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ b504b840-d838-48ba-9e2b-19d81095bf01)(content(Whitespace\" \ \"))))(Projector((id daa86143-083c-4d71-850b-24495aba3348)(kind \ - Card)(syntax(Tile((id \ - cdb7ffae-d8d3-431d-a49d-90bfd6e11327)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0 1))(children(((Tile((id \ - f6a7110f-d7d5-43b9-a4e8-1d2dfb2a3b71)(label([ ]))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0 1))(children(((Tile((id \ + Card)(syntax((Tile((id f6a7110f-d7d5-43b9-a4e8-1d2dfb2a3b71)(label([ \ + ]))(mold((out Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ e37d43a7-581f-4442-bcbe-aca5613e36be)(label(\"(\"\")\"))(mold((out \ Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ Pat))))))(shards(0 1))(children(((Tile((id \ @@ -789,7 +774,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Pat))))))(shards(0))(children())))(Tile((id \ ddb3c523-de75-45a0-980e-9da69cf0413a)(label(_))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0))(children())))))))))))))))))))(model\"((mode \ + Pat))))))(shards(0))(children())))))))))))))))(model\"((mode \ Show))\")))(Secondary((id \ fcd557c2-14c7-470c-83e5-da4553c26f26)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -804,13 +789,9 @@ let out : string * Haz3lcore.PersistentSegment.t = 46))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ f25ce9c5-4ef7-489f-baec-69b73ed26515)(content(Whitespace\" \ \"))))(Projector((id 38eac7ca-731d-48f6-afb1-cf59cd773170)(kind \ - Card)(syntax(Tile((id \ - 35a84f92-dc8c-4589-8e50-e99d60cf6ac6)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0 1))(children(((Tile((id \ - 62c8cdb0-bac8-4269-8de9-c79bfcad579d)(label([ ]))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0 1))(children(((Tile((id \ + Card)(syntax((Tile((id 62c8cdb0-bac8-4269-8de9-c79bfcad579d)(label([ \ + ]))(mold((out Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ 3d88fd9e-d148-4bc3-bb20-fe44f61ab153)(label(\"(\"\")\"))(mold((out \ Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ Pat))))))(shards(0 1))(children(((Tile((id \ @@ -882,7 +863,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Pat))))))(shards(0))(children())))(Tile((id \ a83a0546-298a-4294-9d1c-aff2624e17f2)(label(_))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0))(children())))))))))))))))))))(model\"((mode \ + Pat))))))(shards(0))(children())))))))))))))))(model\"((mode \ Show))\")))(Secondary((id \ 33c153e0-a24d-489f-90a7-8c309d09f51a)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -897,13 +878,9 @@ let out : string * Haz3lcore.PersistentSegment.t = 46))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ b231f1bc-1774-45c2-8e36-e199a3955bb0)(content(Whitespace\" \ \"))))(Projector((id 771012c8-2eec-4267-b1df-c8f003f1cf03)(kind \ - Card)(syntax(Tile((id \ - f87291da-ceba-4476-b738-657be8339b82)(label(\"(\"\")\"))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0 1))(children(((Tile((id \ - 2e1c413c-c4a8-4da7-a4be-afa28c580682)(label([ ]))(mold((out \ - Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0 1))(children(((Tile((id \ + Card)(syntax((Tile((id 2e1c413c-c4a8-4da7-a4be-afa28c580682)(label([ \ + ]))(mold((out Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape \ + Convex)(sort Pat))))))(shards(0 1))(children(((Tile((id \ b211a8dd-8811-4613-94d2-ce973494e8c5)(label(\"(\"\")\"))(mold((out \ Pat)(in_(Pat))(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ Pat))))))(shards(0 1))(children(((Tile((id \ @@ -975,7 +952,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Pat))))))(shards(0))(children())))(Tile((id \ 8243d5d3-e861-4d01-8b20-8ccaf0a1fb65)(label(_))(mold((out \ Pat)(in_())(nibs(((shape Convex)(sort Pat))((shape Convex)(sort \ - Pat))))))(shards(0))(children())))))))))))))))))))(model\"((mode \ + Pat))))))(shards(0))(children())))))))))))))))(model\"((mode \ Show))\")))(Secondary((id \ 6ac78baf-72e4-4f6a-afaa-9dec416dab3f)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -1023,10 +1000,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 296686ab-91fa-4d2a-9e08-c637d9b0df12)(label([ ]))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Projector((id \ - b2c79d07-1a5c-444d-9010-df53800eaf43)(kind Card)(syntax(Tile((id \ - 6fcbe821-0cc4-4708-a01e-09f61a020a68)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + b2c79d07-1a5c-444d-9010-df53800eaf43)(kind Card)(syntax((Tile((id \ cee06e17-5245-4f3c-ac93-49beb67d7259)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Tile((id \ @@ -1040,15 +1014,12 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Tile((id \ 79a847fb-d00e-4b76-81d8-52dda11ee3eb)(label(King))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"((mode \ + Exp))))))(shards(0))(children()))))))))))(model\"((mode \ Show))\")))(Tile((id \ ec90adfa-2ffc-4a92-a523-bcc4be0e9f0f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 0dc5f161-1b52-40f5-ae9a-23df91d2f9cf)(kind Card)(syntax(Tile((id \ - abbf8e03-0a73-4f30-ac4b-9f138a509172)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0dc5f161-1b52-40f5-ae9a-23df91d2f9cf)(kind Card)(syntax((Tile((id \ a884af43-0c67-489a-b998-e08d8bc9d8eb)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Tile((id \ @@ -1062,15 +1033,12 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Tile((id \ 5b4b734b-86c3-432d-88f3-f65664bb8413)(label(Queen))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"((mode \ + Exp))))))(shards(0))(children()))))))))))(model\"((mode \ Show))\")))(Tile((id \ 30ca92c0-ca7f-43c7-97fc-0a0a2e2fac9b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 19cf5567-34c9-447d-a3ca-7995d904334a)(kind Card)(syntax(Tile((id \ - 11cd4e3f-06b4-4842-856f-6b99dcaa07d3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 19cf5567-34c9-447d-a3ca-7995d904334a)(kind Card)(syntax((Tile((id \ b73a5923-a2d8-434f-b17e-73eeeafa4296)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Tile((id \ @@ -1084,15 +1052,12 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Tile((id \ f02472c7-4775-42c6-82b6-1a64ea315d70)(label(Jack))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"((mode \ + Exp))))))(shards(0))(children()))))))))))(model\"((mode \ Show))\")))(Tile((id \ e64cc306-b514-46e8-afc2-e5b8ee6ad755)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Projector((id \ - 43084207-bdce-406e-807a-1878331548c5)(kind Card)(syntax(Tile((id \ - 83b7be7d-18f3-408b-984d-c257afd1820a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 43084207-bdce-406e-807a-1878331548c5)(kind Card)(syntax((Tile((id \ 2d4cb306-ca74-43a4-bc26-01f360a5e46d)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Tile((id \ @@ -1106,15 +1071,12 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Tile((id \ 053e37ba-dbc2-4e5d-a14f-aa89c9dda9a0)(label(Ten))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"((mode \ + Exp))))))(shards(0))(children()))))))))))(model\"((mode \ Show))\")))(Tile((id \ 50373692-caf0-4e78-a088-fb5fc26ceff7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Projector((id \ - c03dc0cc-e255-48f0-8b5d-b11b0aee11c3)(kind Card)(syntax(Tile((id \ - cd8471aa-1b14-4ff2-a76e-79214d52e53c)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + c03dc0cc-e255-48f0-8b5d-b11b0aee11c3)(kind Card)(syntax((Tile((id \ 26d592ce-64a9-44e7-ba8c-ef02ff1373c2)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Tile((id \ @@ -1128,7 +1090,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Tile((id \ 71a86474-f3f7-45f1-aab6-dc3a7ff65ad5)(label(Ace))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"((mode \ + Exp))))))(shards(0))(children()))))))))))(model\"((mode \ Show))\")))))))))))))(Secondary((id \ b3a30bf6-2902-41a0-b35d-c466df53c002)(content(Whitespace\" \ \")))))))))(Secondary((id \ diff --git a/src/web/init/docs/Livelits.ml b/src/web/init/docs/Livelits.ml index 41509dded6..14907d21af 100644 --- a/src/web/init/docs/Livelits.ml +++ b/src/web/init/docs/Livelits.ml @@ -72,10 +72,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 590149d2-0ae2-433b-b659-7d73a79e4fb7)(content(Whitespace\" \ \"))))(Projector((id f655fccf-8ab3-49bb-a073-c6637696129f)(kind \ - Livelit)(syntax(Tile((id \ - 91ad023b-df20-4a59-8a6d-4b63826c6e44)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Livelit)(syntax((Tile((id \ 2f301349-f2c1-4eb9-bd82-3c5d7b025962)(label(^slider))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children())))(Tile((id \ @@ -84,7 +81,7 @@ let out : string * Haz3lcore.PersistentSegment.t = Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ 33b8cb2c-ac91-486f-83aa-b0651f004bd8)(label(85))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children()))))))))))(model\"()\")))(Secondary((id \ 2ba5684e-fcb5-4c5e-b949-a15324e0e541)(content(Whitespace\" \ \")))))))))(Secondary((id \ 7df76a49-c053-48ef-ae8a-a5b176b17913)(content(Whitespace\"\\n\"))))(Secondary((id \ @@ -132,10 +129,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 62ece9e0-5091-4f6e-a745-dc375df3b5b2)(content(Whitespace\" \ \"))))(Projector((id caf8fa3b-bda6-404c-a447-e8e05746b5ed)(kind \ - Livelit)(syntax(Tile((id \ - 186b81bc-b170-4c3f-89e3-e1f782cedae3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Livelit)(syntax((Tile((id \ 379a5546-5bc4-4d32-a39b-1eb62dda9a5b)(label(^emotion))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children())))(Tile((id \ @@ -144,7 +138,7 @@ let out : string * Haz3lcore.PersistentSegment.t = Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ e4c64ce7-5885-43f0-8a4c-2c8bc4003982)(label(0))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children()))))))))))(model\"()\")))(Secondary((id \ 38361cff-c89f-4d36-a143-d4c9d88d4ae4)(content(Whitespace\" \ \")))))))))(Grout((id 6ffd5f7f-c1bc-4636-b92f-1527d7ff5e24)(shape \ Convex))))"; diff --git a/src/web/init/docs/Probes.ml b/src/web/init/docs/Probes.ml index 7d2f9c9553..3b7d44463f 100644 --- a/src/web/init/docs/Probes.ml +++ b/src/web/init/docs/Probes.ml @@ -239,13 +239,10 @@ let out : string * Haz3lcore.PersistentSegment.t = Convex)(sort Exp))))))(shards(0 1))(children(((Secondary((id \ 067473b3-8a94-4982-a142-61d0706e7fd6)(content(Whitespace\" \ \"))))(Projector((id b0e9bfcd-3e96-468e-8a61-6ea3fd457e91)(kind \ - Checkbox)(syntax(Tile((id \ - 4632e83f-8a17-4298-a518-ed0f36f759f7)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ aef7b358-b2b8-42dd-a2ea-3f3a339cf570)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ cf66949f-92c6-463e-b0ce-5f45cc8ca376)(content(Whitespace\"\\n\"))))(Tile((id \ 517d95ce-056d-439f-92fb-0615ce863054)(label(| =>))(mold((out \ Rul)(in_(Pat))(nibs(((shape(Concave 46))(sort Exp))((shape(Concave \ @@ -334,13 +331,10 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 14b5dd20-eb6a-47e5-a9ac-d5a3b220cbd3)(content(Whitespace\" \ \"))))(Projector((id 3af485ca-bed2-4412-8377-40f205ce90d9)(kind \ - Slider)(syntax(Tile((id \ - a2df38a1-1107-442a-83ba-0ff8972aad5e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Slider)(syntax((Tile((id \ db8820d3-2147-42ad-808f-769e4b92f9a3)(label(54))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ 3d6d3783-de3e-438f-a08f-de1bf72286cb)(content(Whitespace\" \ \"))))(Tile((id \ 9af94ebb-8057-4346-8f6d-7c4c3d3e6e8b)(label(**))(mold((out \ diff --git a/src/web/init/docs/Projectors.ml b/src/web/init/docs/Projectors.ml index 1a298e2938..ddadf1946c 100644 --- a/src/web/init/docs/Projectors.ml +++ b/src/web/init/docs/Projectors.ml @@ -63,10 +63,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 43fad740-147a-442b-812a-b936a355e373)(content(Whitespace\" \ \"))))(Projector((id 4284a294-d935-4a31-a297-aebaa50f6da2)(kind \ - Fold)(syntax(Tile((id \ - 091d1238-bd58-411f-86fd-812e9732fb97)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Fold)(syntax((Tile((id \ dff29d30-afdd-471f-8fff-dfbffcd35da8)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Secondary((id \ @@ -111,7 +108,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 73c5e4ea-0d66-4952-8e13-6203187e4681)(content(Whitespace\"\\n\")))))))))(Secondary((id \ 25421f24-943a-4d2a-ab90-4404ff760d84)(content(Whitespace\"\\n\")))))))))(Secondary((id \ f19675a8-adc3-4af4-af65-4cff49d962aa)(content(Whitespace\"\\n\")))))))))(Secondary((id \ - 8d2b9ee8-c8ca-47d7-9aef-1fc6a1a044b5)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 8d2b9ee8-c8ca-47d7-9aef-1fc6a1a044b5)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 2ec26056-7e80-44cf-9779-76764964b4d8)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -147,13 +144,10 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ e13c65e4-7c50-4fde-b99f-414796c2a22c)(content(Whitespace\" \ \"))))(Projector((id 5ffcdf2a-a7a9-47e5-9e28-f62953e3701f)(kind \ - Checkbox)(syntax(Tile((id \ - 63a1d14d-44c7-47ee-9fe0-354f1e0ee931)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b75e0d89-d006-4307-8079-196afede0729)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ 147f5ca5-6f77-44bb-9a04-d945f7a0eac1)(content(Whitespace\" \ \")))))))))(Secondary((id \ 2a3c4349-c508-4f10-9365-3e4da652222b)(content(Whitespace\"\\n\"))))(Tile((id \ @@ -177,13 +171,10 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ dc77662b-18db-4a14-a313-88b8e105274d)(content(Whitespace\" \ \"))))(Projector((id 29d65344-5161-421a-8338-5f5148ca699e)(kind \ - Slider)(syntax(Tile((id \ - 4fe3b1fa-154c-4aad-a069-0aead54b8bdb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Slider)(syntax((Tile((id \ f6f79cda-0a3e-431b-a5d9-3f69e6d794ba)(label(44))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ 84fb5814-9395-4a4b-a7a5-097cf2bedf9c)(content(Whitespace\" \ \")))))))))(Secondary((id \ 47b3f430-4642-4394-95c8-2aab97e3b587)(content(Whitespace\"\\n\"))))(Tile((id \ @@ -207,13 +198,10 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ ecb4c8d0-2bc2-4348-b999-5a793cf1c943)(content(Whitespace\" \ \"))))(Projector((id 1b74b4db-ead1-4b4a-ac6c-5037e3e8f0cf)(kind \ - SliderF)(syntax(Tile((id \ - cac09d3e-93a4-4745-8a60-3bc144113804)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + SliderF)(syntax((Tile((id \ d8b0a75d-afef-458f-8675-78c79d064169)(label(79.00))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ cc6abb76-40d3-4f1d-b67b-e7c16944b73a)(content(Whitespace\" \ \")))))))))(Secondary((id \ 508659ba-b813-4108-9bc1-8cec7765a464)(content(Whitespace\"\\n\"))))(Secondary((id \ @@ -261,10 +249,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 9a9437a4-5cb4-4787-8456-c55890d54405)(content(Whitespace\" \ \"))))(Projector((id 353d3ed4-dd09-4cd0-babc-a2e178bb37c1)(kind \ - Card)(syntax(Tile((id \ - 9edf8abb-12fc-4567-a33a-7034a370ac70)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Card)(syntax((Tile((id \ e0bcf204-ea36-4b32-8a1f-2ba3850acd98)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Tile((id \ @@ -278,7 +263,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Tile((id \ 083eedd5-70a4-44e6-b362-dc3bef0b6d7b)(label(Jack))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children()))))))))))))))(model\"((mode \ + Exp))))))(shards(0))(children()))))))))))(model\"((mode \ Show))\")))(Secondary((id \ 253a6582-6bc8-4761-8b2e-cc50c965a15f)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -325,25 +310,19 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 2461d087-bac4-4cb4-bc8d-67846e2ed967)(content(Whitespace\" \ \"))))(Projector((id 48e71bd5-ac8a-4e02-b1b8-396f4590b34f)(kind \ - Checkbox)(syntax(Tile((id \ - 28b6fd61-1e15-4733-a5df-dd2e51407d25)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 19e70965-c089-4385-b7f9-e64fe7d4e8e0)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9bf05355-31ba-4695-92f5-da5aa77d094c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ cb730385-b811-4450-9469-1b6dc68fe86d)(content(Whitespace\" \ \"))))(Projector((id 64ea135d-4003-4fb8-9e6d-efb48f631ab8)(kind \ - Slider)(syntax(Tile((id \ - cce39e64-1717-4816-a579-c338851bcacf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Slider)(syntax((Tile((id \ 2d5fd3c6-c7f5-45d2-a61b-5dd26e3888ad)(label(28))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ a6a8d798-ad87-44f3-8421-0d8ab600b780)(content(Whitespace\" \ \")))))))))(Secondary((id \ 0732b723-4b2a-4c52-b529-6919b8739796)(content(Whitespace\"\\n\"))))(Secondary((id \ @@ -364,13 +343,10 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 8889971d-9ee5-4571-bde1-191f16fe2c81)(content(Whitespace\" \ \"))))(Projector((id e1d79b34-4632-471f-901e-612b61148239)(kind \ - TextArea)(syntax(Tile((id \ - 0992a602-c939-4657-a8a3-5809edba0e3f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + TextArea)(syntax((Tile((id \ b3da39d2-bde5-47b0-9f3d-b2e56a087d04)(label(\"\\\"\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ bf4c0507-c3c2-4691-82d7-a8ef87fd69d4)(content(Whitespace\" \ \")))))))))(Secondary((id \ 5c40d346-0125-4d5d-85d1-bf8637d1321f)(content(Whitespace\"\\n\"))))(Tile((id \ @@ -386,13 +362,10 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 23fc8097-6799-4e50-8319-5d83bb5d2f78)(content(Whitespace\" \ \"))))(Projector((id b4ffd99c-8274-4433-95af-a104daea61df)(kind \ - TextArea)(syntax(Tile((id \ - 08f2746a-f9ae-413d-aa4f-2d875872df79)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + TextArea)(syntax((Tile((id \ 7e75da2e-e8d9-478e-8be6-d912866752f2)(label(\"\\\"\\\\n\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ e5014ef9-de77-4477-a603-909c1f99f798)(content(Whitespace\" \ \")))))))))(Secondary((id \ 61cb7d89-49e6-409b-94d5-473e59b55d11)(content(Whitespace\"\\n\"))))(Tile((id \ @@ -408,13 +381,10 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ ac436700-2caa-4ed1-8b58-95beaf1ed9f0)(content(Whitespace\" \ \"))))(Projector((id 2a1621c8-0757-4b0f-b359-e1f01760eab4)(kind \ - TextArea)(syntax(Tile((id \ - 519e3681-3139-441c-9c70-ee5345215501)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + TextArea)(syntax((Tile((id \ 820c58cf-a32d-4b6a-a6a4-5207c9731cbe)(label(\"\\\"a\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ 778d16df-0d20-40f7-9ce5-d81f9aafe42a)(content(Whitespace\" \ \")))))))))(Secondary((id \ 18d32f2e-5261-4a38-8336-3644c31a05da)(content(Whitespace\"\\n\"))))(Tile((id \ @@ -428,13 +398,10 @@ let out : string * Haz3lcore.PersistentSegment.t = Pat))))))(shards(0))(children())))(Secondary((id \ 96f592c6-9537-44e6-827a-d5f0d54bc068)(content(Whitespace\" \ \")))))((Projector((id 9fae372c-bbfb-43b3-8a55-5ac971f1fee1)(kind \ - TextArea)(syntax(Tile((id \ - 0329d44d-d59a-4940-b141-a866464d6803)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + TextArea)(syntax((Tile((id \ 1560b613-e297-4839-9d35-10a872a1f1ee)(label(\"\\\"shift\\\\n\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Secondary((id \ 2b1b5fe9-9c66-45fb-87a5-65f3b6adf2fe)(content(Whitespace\"\\n\"))))(Tile((id \ a320b455-95ba-468b-8c17-0a7918485546)(label(let = in))(mold((out \ Exp)(in_(Pat Exp))(nibs(((shape Convex)(sort Exp))((shape(Concave \ @@ -446,13 +413,10 @@ let out : string * Haz3lcore.PersistentSegment.t = Pat))))))(shards(0))(children())))(Secondary((id \ 08c872fe-e4b6-43cf-8fba-bf627bc94301)(content(Whitespace\" \ \")))))((Projector((id 272c3cbc-ecba-46c7-a7b0-82b5248bacad)(kind \ - TextArea)(syntax(Tile((id \ - 89e18040-cec0-4108-8cd9-9df07a7af4f2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + TextArea)(syntax((Tile((id \ 6ea4ae29-4ef9-492a-b125-5d6910f7e23d)(label(\"\\\"\\\\nmalicious\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ 7fd60bae-a759-4b6c-89f4-ec8851c7635d)(content(Whitespace\" \ \")))))))))(Secondary((id \ ea94791c-6a5b-4d66-99f3-2b6d18a9e8cc)(content(Whitespace\"\\n\"))))(Tile((id \ @@ -468,14 +432,11 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 52ec3f3c-c481-472c-916a-3f8cac093820)(content(Whitespace\" \ \"))))(Projector((id 409f1909-91c6-4633-96e9-b82c7fc8f11b)(kind \ - TextArea)(syntax(Tile((id \ - 0c596b46-e86d-423e-9e29-f8000e402870)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + TextArea)(syntax((Tile((id \ 894b7b0a-028c-42bc-8b57-24fb7eb1dfb1)(label(\"\\\"a\\\\n shift\\\\n \ malicious\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Secondary((id \ 1033bf53-2b34-4999-87b7-78920c598bdc)(content(Whitespace\"\\n\"))))(Secondary((id \ 217cbe8e-aa24-4eb6-a740-46add30b106e)(content(Whitespace\"\\n\"))))(Secondary((id \ 3d5b8b25-4f8d-4c7d-bfb6-72a4bb8b4690)(content(Comment\"# Multiline \ @@ -502,13 +463,10 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ c1871203-076b-4191-a839-bc45cdd30899)(content(Whitespace\" \ \"))))(Projector((id f77b8c3b-f9a4-4a13-8036-590cb185b6dc)(kind \ - TextArea)(syntax(Tile((id \ - a3f51430-fb68-453c-a4c6-828462755760)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + TextArea)(syntax((Tile((id \ d9c6aa76-56e4-4d42-a43c-cc1cc86e5fe0)(label(\"\\\"\\\\nmalicious\\\"\"))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Secondary((id \ 868c8c84-1816-454e-b18e-ea6c0ac94818)(content(Whitespace\" \ \")))))))))(Secondary((id \ 6527a34c-fd5b-40d7-9353-9e92e911035f)(content(Whitespace\"\\n\"))))(Secondary((id \ @@ -526,14 +484,11 @@ let out : string * Haz3lcore.PersistentSegment.t = externally; pasting this here projects it. #\"))))(Secondary((id \ 2fff33d3-0d83-43c6-bb42-b98b93f870b0)(content(Whitespace\"\\n\"))))(Secondary((id \ 00b91957-0048-4c62-a570-13cd37f3788c)(content(Whitespace\"\\n\"))))(Projector((id \ - 0b6ec64b-c67a-4743-9cec-6d44a0b0e366)(kind Fold)(syntax(Tile((id \ - 13f7512d-ffe1-4a6d-a162-4aa8c3a4d11e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 0b6ec64b-c67a-4743-9cec-6d44a0b0e366)(kind Fold)(syntax((Tile((id \ d4e03116-c3b7-4dd0-af16-0e18cc8c07ff)(label(\"\\\"Put it \ back\\\"\"))(mold((out Exp)(in_())(nibs(((shape Convex)(sort \ Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Exp))))))(shards(0))(children())))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\"))))"; backup_text = "# _____ _____ _____ _ _____ _____ ______ #\n\ diff --git a/src/web/init/docs/Tables.ml b/src/web/init/docs/Tables.ml index 2596d60bc7..6b31939600 100644 --- a/src/web/init/docs/Tables.ml +++ b/src/web/init/docs/Tables.ml @@ -487,10 +487,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ f279931b-68b4-4932-b4cf-2eb5f0a9d4b6)(content(Whitespace\" \ \"))))(Projector((id 2cc43a19-a9e3-4ad0-9abc-bdf19bd16741)(kind \ - Fold)(syntax(Tile((id \ - 8b9689c2-57ef-4aaa-b65e-2d3a5998f05f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Fold)(syntax((Tile((id \ 3258fef8-db10-4c70-ae8f-6706480a2308)(label(fun ->))(mold((out \ Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ 37))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ @@ -570,7 +567,7 @@ let out : string * Haz3lcore.PersistentSegment.t = Convex)(sort Exp))))))(shards(0 1))(children(((Tile((id \ 1cfc7a76-c7c6-4677-a57e-5e2f71c83179)(label(ns))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Exp))))))(shards(0))(children())))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ 6e9732f0-2c7e-481c-94b6-6fe1b15870ee)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -718,10 +715,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 3ec2ba8c-9d00-471a-89c5-ab7e83f42672)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 24))(sort Pat))((shape(Concave \ 24))(sort Typ))))))(shards(0))(children())))(Projector((id \ - 933f63fb-f0b3-467c-9a44-d653dae61424)(kind Fold)(syntax(Tile((id \ - 22eba2a4-7acd-44e5-a206-e2c25642581f)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0 1))(children(((Tile((id \ + 933f63fb-f0b3-467c-9a44-d653dae61424)(kind Fold)(syntax((Tile((id \ 3aab38e8-8a1e-4cf2-b8e9-0aa38114505c)(label(\"(\"\")\"))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ Typ))))))(shards(0 1))(children(((Tile((id \ @@ -747,7 +741,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 39))(sort Typ))))))(shards(0))(children())))(Tile((id \ fe753571-3431-4136-a2bf-57d3928d68b3)(label(Int))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0))(children()))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Typ))))))(shards(0))(children()))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ d9ca93c8-cefb-4ff7-b358-ae59d064737c)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -1347,97 +1341,73 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 544e5d8d-4e4c-4425-89d5-b902acccd081)(content(Whitespace\" \ \"))))(Projector((id 8f5bcbaf-e9f9-48f3-b797-fe6f3b76a7bd)(kind \ - Checkbox)(syntax(Tile((id \ - 83ba7601-80d6-438b-94e3-19e72608dc7f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bf9fce3a-b792-47e9-85de-7a2742e3b0f3)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3a46bec0-0fc1-4b74-862a-0424dbccdf6b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a3826e2c-029a-462f-93f6-93a20e0a9707)(content(Whitespace\" \ \"))))(Projector((id 886e3089-5459-4e3e-b3b4-02ffb161ba6b)(kind \ - Checkbox)(syntax(Tile((id \ - 889afc35-deaf-4943-9ffc-37a3e74aa533)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d00ee941-0cf3-49e9-bc3c-853413308a5e)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 590f88fc-b8e8-4b34-ab15-a17b48b24add)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4a3230c1-6ee8-4da6-9cbc-b4c4f17ea5a9)(content(Whitespace\" \ \"))))(Projector((id 38280e65-3900-43e2-81fa-8dbdfe14804c)(kind \ - Checkbox)(syntax(Tile((id \ - 117eb5be-ecef-4226-94fd-c0022f5607a8)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ f7153177-6c12-4f4b-bfdc-861f1b1e609a)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e3a68aa4-6c1f-42ab-9625-ba2a5d550583)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1f3e2931-c1c5-41b6-bc9f-106c2ec6b937)(content(Whitespace\" \ \"))))(Projector((id dc29ab81-fb59-46a6-8c39-91e7a26bafe4)(kind \ - Checkbox)(syntax(Tile((id \ - 68d2dec9-d4af-43d2-8813-3bc47ee92584)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b929269f-67b8-4658-96dc-db0a98b51a60)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 546a1282-0080-48eb-b196-9dcb66d3cac2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e5fa9845-ee98-44cd-9722-a6e7edcfa24a)(content(Whitespace\" \ \"))))(Projector((id 0520fdc7-07f3-456b-ad93-ebb0002ebaf4)(kind \ - Checkbox)(syntax(Tile((id \ - 7be9dac1-cdce-4bd2-a486-c4811e48f7a1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bef8a8be-beb4-4b2a-abe8-e58d0768c56a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1be3441b-d86f-413f-b506-a36d57fb8e92)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2e362d6a-d614-4648-bc95-f5a353a4e4c0)(content(Whitespace\" \ \"))))(Projector((id c9821693-8bb7-4573-a549-2a020881074b)(kind \ - Checkbox)(syntax(Tile((id \ - 29a8733e-4611-44ae-9ac1-79a97de2821b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cf474ce6-8281-432d-8b9b-58b3c2441676)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0d996ba1-dea6-405a-bc50-8d376eeda974)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3a1b1437-482c-4bd2-bd7e-dd550bcf0b32)(content(Whitespace\" \ \"))))(Projector((id 4d45f898-3d79-4889-9b00-2a241ac2bcf7)(kind \ - Checkbox)(syntax(Tile((id \ - 57286e1b-aa62-49fe-9f57-4f499918f9f1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 914fe189-7e2b-4635-996d-9290df610058)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 22fe2b9d-a962-4a14-bae6-95a8645dd0e4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d826312d-727c-42bf-b5ea-3d4791963181)(content(Whitespace\" \ \"))))(Projector((id f50a3076-d962-4dcd-b6cc-9c382afffebe)(kind \ - Checkbox)(syntax(Tile((id \ - 14fdb0d1-4a0d-458a-834b-5bf32280fb9e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e5d424b0-e7af-41d0-b227-a43e90f2b114)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 9e837667-1b85-4fe5-b20f-00c7600d7adb)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1453,97 +1423,73 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 65eba725-c649-477a-a6b9-b201524d3774)(content(Whitespace\" \ \"))))(Projector((id b6d7f691-b739-474d-aa2c-6ba86edaa21e)(kind \ - Checkbox)(syntax(Tile((id \ - 210d8325-fffe-47f7-b21c-364f18ba4f21)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4288b3a8-f54f-4146-be5d-b1a1f788a280)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c61d4a79-7e6c-4d90-9af2-a3b1b10d2cd7)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f9956ffe-a799-4898-8fd3-6e4370a3b20d)(content(Whitespace\" \ \"))))(Projector((id ed394bf8-8851-4b82-86bb-2793ed99ca15)(kind \ - Checkbox)(syntax(Tile((id \ - 156307b2-786f-4301-930b-e4ab800386fc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ae7b5cf5-f175-438f-be22-21fbdbb04f60)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 6c76f15b-868d-4bab-ad7e-ad9f5045e5fc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 58550019-5a91-45d6-bddd-c5aa9bc5ce19)(content(Whitespace\" \ \"))))(Projector((id 8c8842ec-ad8c-4455-8782-b5d435dd8b28)(kind \ - Checkbox)(syntax(Tile((id \ - 15c028dd-66ee-4d5e-b0ef-cc449278faca)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8925aaf9-f37a-422e-9913-ea1832ec1f0a)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 5b23b552-ee5f-4551-bd0e-e6e787ccceea)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 42d82227-6d59-480a-a458-ed27167657e0)(content(Whitespace\" \ \"))))(Projector((id 0b4545bc-ab9b-475d-827f-9352cbec5287)(kind \ - Checkbox)(syntax(Tile((id \ - 29b803c0-9f29-429d-849a-3f994529d4b4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a798521a-8875-4f34-bb57-8215a5651d47)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b49fbbad-7668-41db-b723-e3022ba344a4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 73486737-cc77-418a-9421-06b6dc1528d2)(content(Whitespace\" \ \"))))(Projector((id 884fa48c-a848-4a82-bc19-b679dcb935d6)(kind \ - Checkbox)(syntax(Tile((id \ - 13e573ae-b77c-4162-921f-6d0512b06650)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7ebc3390-c9e8-4a91-a770-336c57d05310)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0b96bd39-95cc-4d70-ac5d-72a2b71f1772)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ bc8d09cb-c0fb-4c82-91fd-1164d93e7c64)(content(Whitespace\" \ \"))))(Projector((id bb1245fa-2d5a-4e6b-86d9-ea8dc4a9d483)(kind \ - Checkbox)(syntax(Tile((id \ - abbd484c-8bd5-4ddf-a7fb-5478de9fb7e4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9f79ca7b-286e-4d7c-bc20-3ac25cb2b752)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4459d604-6050-493a-83a2-a2bfd7307e88)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d34d8e10-966d-4fdd-b231-74230f42f03e)(content(Whitespace\" \ \"))))(Projector((id eb8f2968-2a05-47ac-9fc6-0037b5129187)(kind \ - Checkbox)(syntax(Tile((id \ - b9fadb91-5222-43c9-a649-e9cd75a75fae)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 9350f607-205c-4faf-be24-830de99df080)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 83dc548d-0d62-4ec1-ac03-cde097749bd8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 74cf27c5-5b17-4782-9a55-478c61f4ebc3)(content(Whitespace\" \ \"))))(Projector((id c6ae8bb8-8c86-40e8-b5e3-e40bbba3b25b)(kind \ - Checkbox)(syntax(Tile((id \ - 8c363a01-63e6-419c-a77f-c7858623ae0e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5e0d430e-03d5-4519-b356-96b4757b4338)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ e47d2e11-6f2d-496a-a4f2-e5ffb0514ef1)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1559,97 +1505,73 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 38195faf-75b6-48b0-b9c6-f4243ceac850)(content(Whitespace\" \ \"))))(Projector((id 0b6c5854-55e6-4143-a581-7c3f18b74948)(kind \ - Checkbox)(syntax(Tile((id \ - 4036679e-d1cf-4156-8115-6f4d73cd2c47)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0d08ff86-8fcc-40fc-9525-625f2a251bc6)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 525f4a24-1b8c-442a-bb88-5a669548091b)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b4319829-69dd-4d2c-adcd-396ccc3f7850)(content(Whitespace\" \ \"))))(Projector((id 231bc6f8-7b5e-4b76-94f0-c108a5559385)(kind \ - Checkbox)(syntax(Tile((id \ - a262599a-b675-418c-a5ea-ac0a838b4582)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 353b2185-410b-4f54-888c-e8b1b101fb47)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1be0d171-f2ea-40fe-a861-9b58a59097db)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a50fe90d-2fd2-41ed-a6be-5d272b223b8f)(content(Whitespace\" \ \"))))(Projector((id 611f1614-d950-43e5-a4a7-4f6dfd740dc5)(kind \ - Checkbox)(syntax(Tile((id \ - 5bbdba3d-6633-4d49-8975-ff380fc31150)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 28a507bf-b056-440c-98ab-cc0d81a98f5a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ccbe2bce-5a66-48c2-8bca-df86e41efa05)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d5363a89-fba8-442c-9cf4-4dcc99929072)(content(Whitespace\" \ \"))))(Projector((id 62ae9b56-719b-46ea-827b-8ad5559d15f8)(kind \ - Checkbox)(syntax(Tile((id \ - 2945cf30-3ca0-4c7a-8726-d82908c69996)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7c3dea1c-ad35-4452-ac31-a06b0c3bc545)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 1dcc3f00-88e6-4fe5-9a9d-ad2d6a2562d2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 92094cf5-ec31-4723-a2ba-021d9b774b87)(content(Whitespace\" \ \"))))(Projector((id a2a53ef2-946a-4a51-a4e9-62320dfcc74e)(kind \ - Checkbox)(syntax(Tile((id \ - c58abea8-4417-4475-85c0-7b98bbca13ee)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 54b8c87e-8093-4a35-ac79-f9b45af615da)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a08eee1c-2b3e-4643-974c-aa8e141d4646)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 030bacc1-d966-4cba-85af-8ac70cd034cb)(content(Whitespace\" \ \"))))(Projector((id 71cf63f6-d464-4665-b474-c86e73ab5db3)(kind \ - Checkbox)(syntax(Tile((id \ - b44c089d-8471-4a0c-9bc2-0ae5c3ed24a3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 614b35bd-b264-4d39-a5eb-d924857b8156)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 03bfa4ec-8785-4cc4-8733-7bcf9bbd5b32)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 37193905-eb5e-49b3-bcea-ac0ab90b4839)(content(Whitespace\" \ \"))))(Projector((id 1c4bfc14-3b95-4553-b275-0c3552654855)(kind \ - Checkbox)(syntax(Tile((id \ - 1f46ba69-a091-4808-a94a-b6ee02f54c58)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3752a1c1-3782-4a4b-8150-0f87c2dddd96)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 25919aee-2074-42a9-bb36-b4f0a23b1139)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ cc55c109-3b91-42a0-b14b-b3573d9cb74f)(content(Whitespace\" \ \"))))(Projector((id 4221c749-9b7b-423b-9e28-f84ab85f05ff)(kind \ - Checkbox)(syntax(Tile((id \ - caba085e-4e99-4465-9ebc-6a964547a3d4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7314742f-ca91-4c0d-8b69-cb449f3ec561)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 64576b51-64dd-44aa-91fe-18726a9560a8)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1665,97 +1587,73 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f500f6aa-2eae-4964-8fc1-dd01b4529d10)(content(Whitespace\" \ \"))))(Projector((id 04edebd9-2923-4cd1-b0d7-ca0e0db4fcb0)(kind \ - Checkbox)(syntax(Tile((id \ - f7704c78-9988-4762-a876-924ccc816199)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ db02e954-0e0d-4603-a571-182ab70ffde6)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 4c7ee6b1-80f2-49e7-a711-e1d851a0ab9f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 54791538-c1ae-4bbe-ad23-72df0403d3dd)(content(Whitespace\" \ \"))))(Projector((id 075b0fc5-b165-456b-8fe7-227b26bfc926)(kind \ - Checkbox)(syntax(Tile((id \ - 2dfcd44d-a77b-4beb-aab4-f72335426f65)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 145487ef-7725-453f-a4e7-af820b1b7edd)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9ade65d2-9451-437a-a20a-a57b3a12de68)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 48c7c1f0-21a8-4f08-b0cb-388d9b87244a)(content(Whitespace\" \ \"))))(Projector((id 980ecec3-34e5-408a-a4bd-c52ba37f9d6c)(kind \ - Checkbox)(syntax(Tile((id \ - 3a670898-ee42-4226-b374-5aecb397b383)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ed849bf6-d613-4b6d-bf37-c7500cb8ad49)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 0511280a-d917-479a-90b1-725162a9b519)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ cdc2ff82-9a58-46e9-81a1-2bf9885f4bf5)(content(Whitespace\" \ \"))))(Projector((id 6fef2022-452f-45fe-a085-67ad526c5a38)(kind \ - Checkbox)(syntax(Tile((id \ - 43260ed0-6dc7-4eae-ba1a-fcd207f7eed2)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7aa52882-b1ad-4e3c-9177-2401bd545943)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 92bcf2cc-a53b-4cd2-bc35-d1c5ec343c93)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 848d654c-f889-40e1-b756-25c095dbdcb9)(content(Whitespace\" \ \"))))(Projector((id 2b312177-7bb0-45e2-b9ed-78fc9aa21e84)(kind \ - Checkbox)(syntax(Tile((id \ - f2a4337d-9988-4894-a65e-d17c38632c91)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 07a2b1d3-2b23-4e94-88a9-dfd1c183557a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3e64eaac-1ec9-48f7-ba97-9ebbdcd2a6b9)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 6819e8e3-fa86-479d-8cfc-d5769fd6f0f1)(content(Whitespace\" \ \"))))(Projector((id 58e67c8c-ca15-4cb6-972f-06a65e16c1ab)(kind \ - Checkbox)(syntax(Tile((id \ - 13819972-4352-418d-a1a3-e2491157c943)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d5a4e5e7-1f71-4391-83e4-004296efca6f)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ ed4e5d69-2a83-4afc-99f5-b1cc86b4de68)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e57b5b14-0401-44b7-96a5-7719814534a4)(content(Whitespace\" \ \"))))(Projector((id 1e902460-d139-4a6d-abaa-3e00fc90aed0)(kind \ - Checkbox)(syntax(Tile((id \ - f376ec60-5c2e-420f-9515-d8c8eec4ebeb)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 36c3f98c-4632-4dc1-a4d8-e13e695a7e7b)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d25a389b-7665-4c1d-9ecc-1130d5c2d7b0)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ dc2063a9-0107-4010-a6f0-2fc5ec8f75b6)(content(Whitespace\" \ \"))))(Projector((id 1f1054c1-9dab-429c-956d-b945f1f2dbe9)(kind \ - Checkbox)(syntax(Tile((id \ - dc55e489-ac74-4f41-8db4-1dedf5db7511)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ad8726b1-ddd1-41b4-8072-d64539b93d40)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 6c2c6c04-c3d7-44f5-8421-4de4b56f0d25)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1771,97 +1669,73 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 2fb1c553-6e90-4df0-8fc3-c31ee75558cb)(content(Whitespace\" \ \"))))(Projector((id 7fb83116-a066-47e4-af75-df1e167bbbe1)(kind \ - Checkbox)(syntax(Tile((id \ - 53423d8c-586c-47e2-b31c-1869cd5733b4)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 15ac44a5-048c-4739-ab91-0e998c869af2)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cc6b9c94-c401-4209-9f4b-a0c9b3668dc6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c4630c8a-702c-470e-9053-763c29e4cb5c)(content(Whitespace\" \ \"))))(Projector((id ace5f104-7a66-441b-8a45-b3d4f11a3816)(kind \ - Checkbox)(syntax(Tile((id \ - 56c22ade-e9df-4af5-b45a-6047f2227aab)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6f4d43b9-428e-4b5b-b66a-42c0470108e9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9a48d0ca-304b-48ac-9768-5c0e9fd6862e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c4ffaef1-ae47-4091-aa6a-55f3b4774a14)(content(Whitespace\" \ \"))))(Projector((id 2b864c18-5540-4542-a720-eb9772df9b39)(kind \ - Checkbox)(syntax(Tile((id \ - 79bd07c7-18b4-405c-b6f9-bb7e229816dc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 31972724-2476-4854-ad62-a110fa638534)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 065c9e2d-500a-4ac3-aaa8-b0c9487aa5a4)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 872942d4-42e5-4b03-a57c-232745521cc8)(content(Whitespace\" \ \"))))(Projector((id d120b57d-864e-4cce-8031-5ea2cb7ffb7c)(kind \ - Checkbox)(syntax(Tile((id \ - 741503a3-e6d3-478c-a85f-6956033924ad)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 37c9038d-4d64-4407-b082-cac9e7836717)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 01fd2e58-aae4-479c-ad13-8ff9b5d00db2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ cef922e7-0658-4821-93a2-7e8764beaf66)(content(Whitespace\" \ \"))))(Projector((id 5e8d21b7-9b92-41bd-ba55-8a38e7ae3f2b)(kind \ - Checkbox)(syntax(Tile((id \ - 5fccd7d3-97f5-4f02-b50b-34e5095fcfe6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6d398082-2484-4050-9e0d-56d093a99b8a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f519174f-92db-451f-affe-6604f4f494dd)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ dc126b27-a035-4d56-86b0-dbd73bd822c4)(content(Whitespace\" \ \"))))(Projector((id 17384f62-221f-4558-b6cc-8278008c112d)(kind \ - Checkbox)(syntax(Tile((id \ - a5b125a8-cc33-4a01-ba6d-c4182652573e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ baa2d653-1075-48ce-b92e-0f2eef7875c7)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ f4d7c299-da0a-40af-834f-275871642100)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1ea0b251-8d8b-4e37-8039-10bded543528)(content(Whitespace\" \ \"))))(Projector((id fe63d924-7692-4d69-9455-30d50985322a)(kind \ - Checkbox)(syntax(Tile((id \ - 9ae2eb7f-f811-4e75-8510-db5a41d28640)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a62f98b8-b599-4d30-aea6-4f3a6036f9d9)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 64480a5d-7651-4d42-a6e8-1bd405e7eb1e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 508fc744-e9c7-4ec0-b1a9-9dd2c2fc98a2)(content(Whitespace\" \ \"))))(Projector((id 01d9d6a4-1795-4bb7-9d0c-8720717315e7)(kind \ - Checkbox)(syntax(Tile((id \ - 62cdd457-5fd5-4bc7-8fa4-05d3657728ff)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8b6ac910-6b73-4e66-9181-4e33672bf226)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 9145c318-585d-46ef-93b1-c219c1398cac)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1877,97 +1751,73 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3fc445fb-1714-4b8c-9d79-21d43fec237f)(content(Whitespace\" \ \"))))(Projector((id 8ecfbb26-488e-4204-b27d-bbe8dbcb4c7f)(kind \ - Checkbox)(syntax(Tile((id \ - a23f9919-156e-43f7-b0fd-24df11033a75)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6f414231-ca12-49a4-8697-62f95fdb5d24)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c69deb3b-15df-4552-8de3-8199b47063ff)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 67a3068d-ea73-4406-84b2-ebee0d238e20)(content(Whitespace\" \ \"))))(Projector((id 35ef4a8f-7054-4129-bb11-0ae5c6d1d2bb)(kind \ - Checkbox)(syntax(Tile((id \ - 09f80b50-7d93-410f-a832-8fafffa8e492)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b9aee69a-ec7f-4dcf-9a7f-d917e5197f6c)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 3a996c42-9e7a-4646-bad3-71aac33f096f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ cb8657c0-4032-4bc1-8010-4fa3b99d67d6)(content(Whitespace\" \ \"))))(Projector((id e1dce41b-5fc4-4c26-8509-c97961667dff)(kind \ - Checkbox)(syntax(Tile((id \ - 90c00dd8-88db-470c-a52a-cceb0bab006f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 5e013af7-8e42-4094-ba1c-7e2f47f12308)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ a6b16635-0eb3-4431-aa2b-d506573ff306)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c92302b8-8c4d-450a-89a8-35f987d720cd)(content(Whitespace\" \ \"))))(Projector((id 929d1e59-0466-48f8-9867-ce6549a49ea5)(kind \ - Checkbox)(syntax(Tile((id \ - 26bc977d-6295-4a12-b8ef-fdffa80f0d65)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ebbf811d-e6e8-4e69-a785-629d07984801)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 689f4eb6-800d-4503-ae5c-7fdab9e8094a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 60ae5513-f2c7-4f0a-9f55-17719c4a3704)(content(Whitespace\" \ \"))))(Projector((id e514e390-6027-43b0-9c9f-affadab5cb3f)(kind \ - Checkbox)(syntax(Tile((id \ - 89cb9504-ceaa-4fe4-832a-ce93b17ce1ba)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 3ba98824-e83f-4fc7-9a14-de74706cf9c3)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2a2d1aca-17ef-4dfd-b46a-d01237211c8a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 06261949-58b6-4f83-b030-56b51547c842)(content(Whitespace\" \ \"))))(Projector((id 2694e49f-ed4b-48f4-8f5a-e80ad7656bca)(kind \ - Checkbox)(syntax(Tile((id \ - 889935fe-9b39-45bd-9125-cae29e8856f9)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 92c04c6b-485a-43eb-8248-f9f146d827e2)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 9de2c7c6-b1b5-49f9-be58-7f365676882a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c1f165eb-8f46-4896-b0e8-4bab7fdcf052)(content(Whitespace\" \ \"))))(Projector((id 72da5a28-0fa1-4d81-b72f-cfc71e0e1985)(kind \ - Checkbox)(syntax(Tile((id \ - 651b954d-3e53-4832-a0c6-997fdd66026e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 271655f2-c01d-40f6-8026-fde93d6f13ae)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ d8ff8c7e-94eb-41bd-92c4-f2c857b435b5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ b07990da-65ea-4f51-bf03-105758613a50)(content(Whitespace\" \ \"))))(Projector((id e173774a-398c-4773-a3f9-57cdc104eba7)(kind \ - Checkbox)(syntax(Tile((id \ - ee1d9951-b8d7-4ead-974c-76fd0086fe9f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a393588a-3d2a-4160-acfd-8dd8d49a5b51)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ bac18508-93d5-47f8-a9ff-57cd26eebf5d)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -1983,97 +1833,73 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a47f8bd7-99d9-4da8-8d05-8d10dffda669)(content(Whitespace\" \ \"))))(Projector((id bd3ed6a4-1118-49b4-a7b9-a81a6fac7720)(kind \ - Checkbox)(syntax(Tile((id \ - b4ac08fc-43ac-4f4a-9588-373a6e5efa39)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c826cb9a-ef8d-44f0-b834-d6eb53741f2c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 2ce4cebd-7396-4000-9e30-4932785b25d6)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 4e171386-aa0c-4142-9d6a-6d725d2ccc67)(content(Whitespace\" \ \"))))(Projector((id 56d24eda-77f2-4af0-a977-fa95d583a932)(kind \ - Checkbox)(syntax(Tile((id \ - df0e69d7-66a4-4a08-8758-f80a5320d92e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 11873014-a2b6-4996-bc44-f825ff2fa1be)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 09301444-7ab0-4c77-92e9-a84adcee6cfc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 3ed01971-dcfd-4dfb-9ee1-18f6089b1f1d)(content(Whitespace\" \ \"))))(Projector((id 41c9e5f1-6ca2-48d0-8b2c-019bce6d0019)(kind \ - Checkbox)(syntax(Tile((id \ - 36d41bd8-88dd-42f0-ac39-1556c1488380)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 0964c5d5-ce13-4161-bbf6-29c8b570b39b)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 093bf427-f4da-48f2-9275-b153f2313285)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 69d2a891-495d-4ad6-b5c8-e27f4859178d)(content(Whitespace\" \ \"))))(Projector((id f3b1e4bb-dbd5-49a7-8a32-b333b719658a)(kind \ - Checkbox)(syntax(Tile((id \ - 1c6048d2-8411-409e-b1de-40550c019d7d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ b0596c5c-7689-4f1e-a35c-22c7756a3c82)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e8014746-7f59-461d-9813-591d6590a061)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f4f9dc8a-e3e5-46df-a321-0cdc2e3cdcde)(content(Whitespace\" \ \"))))(Projector((id 5e048d80-dd34-437b-b4f4-d36c9d4fde46)(kind \ - Checkbox)(syntax(Tile((id \ - e31526a3-8dfc-442e-a8b4-d1397a163a49)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cd29e9d3-1cda-4d46-8943-fd702f8b0684)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 621de58b-14ee-499d-8382-da80c092928c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 078c03bd-e094-4b80-8cad-f1356003cc3d)(content(Whitespace\" \ \"))))(Projector((id c94a25f7-5c47-437c-8600-c9b8e89a7b6e)(kind \ - Checkbox)(syntax(Tile((id \ - 9d745e09-2dd8-4f18-9e57-e8c9605c0f8f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ a1fd79f9-5ccd-4920-9129-7726a3861d50)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 678955bb-0149-48be-af50-820eaadf991f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 65dd61e9-aaf7-4009-93a5-1ce721ab0e02)(content(Whitespace\" \ \"))))(Projector((id 84d6bca7-5f40-448f-82cf-cfb628e07897)(kind \ - Checkbox)(syntax(Tile((id \ - 55d8291f-0e82-4589-90ed-dcb25241dd7e)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 4e86e109-c7b1-401c-95de-5304af03d394)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e27ae219-6aa8-4fed-a6ca-22f707bc4e6c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 7ab22d89-14ee-4fb9-9928-d78bf91a7f82)(content(Whitespace\" \ \"))))(Projector((id c7814eb5-f2e8-4fce-ad81-256a3eaafc58)(kind \ - Checkbox)(syntax(Tile((id \ - 366261a7-7cda-48c6-927c-666f765c4aa1)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ c26c3f8d-3c7f-4b4c-8b53-0d1ee85fe27a)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ 40a9902d-b3e1-4634-8693-860a761baa0f)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2089,97 +1915,73 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ bd3e31b7-d127-4b76-ae62-ca77e47497c3)(content(Whitespace\" \ \"))))(Projector((id e8fdac47-e97b-45cf-9597-4488f716accd)(kind \ - Checkbox)(syntax(Tile((id \ - 2e7f6c2d-0275-43ba-b990-f17d0f3ebb97)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 6ab91af9-7350-4aae-97d3-ae5f20682391)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 70f6bbb2-83cd-4264-9aad-3787558d1f0c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 31b396ea-0ef8-4e50-9869-666aa8a35b1f)(content(Whitespace\" \ \"))))(Projector((id 86528728-8f3c-4bf1-88c3-83c5f10ae18a)(kind \ - Checkbox)(syntax(Tile((id \ - 1784385c-67cf-4fd9-bfee-626aaff2fe6b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 45dc455c-4afa-497a-bced-1b404d047a73)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ cf6528f7-554a-43fb-9892-8c49040943b2)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ c5f73807-ee4e-43d8-b2d2-4f6139d154ff)(content(Whitespace\" \ \"))))(Projector((id 9468fb86-0641-4eab-a86c-07ebd608797c)(kind \ - Checkbox)(syntax(Tile((id \ - 61b07839-1cb8-4dc2-89ec-62c0dd1fa42f)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 8fa4d9e6-f07b-44a9-9721-c75095ee57cf)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ c37e6bfd-5744-4f37-b93a-ad41432130ba)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ee5eb5d8-501d-4513-bc8c-dabdd83bd96d)(content(Whitespace\" \ \"))))(Projector((id 0271f42c-f000-4b42-9bac-3babdc712e31)(kind \ - Checkbox)(syntax(Tile((id \ - a7a74043-00da-4897-9e68-8a6a3f7fa7e6)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 311371fe-1a2c-4040-8566-2904de4d37d8)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 79acbc4c-a8b8-411c-8ea6-9fcfa2228bcc)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 9d8a1dfe-8d9b-4be1-a308-dd28d96c8af2)(content(Whitespace\" \ \"))))(Projector((id f07bb155-2eda-4969-a8e7-9b4a5783d771)(kind \ - Checkbox)(syntax(Tile((id \ - ca32c9b3-2ff7-4f91-9143-18fb9b603b7d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 556f0bfc-2a34-4f47-8ffc-fabb3645e537)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ fbb8909c-aff1-41aa-b502-5dd7a9bb263a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8ab4ca4e-6c0e-4a57-a222-71543ba64aba)(content(Whitespace\" \ \"))))(Projector((id a5b4f4d7-c884-4553-96a3-c4d0fae17c87)(kind \ - Checkbox)(syntax(Tile((id \ - c131a08e-182d-478d-8fd6-464f375405ed)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bb44abda-9ad5-439c-9682-4f687282d777)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ e7d30c2b-ec73-40b5-a3c2-98c978ee9443)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ e3a8b929-fac5-4b43-9637-f11b1d2fad20)(content(Whitespace\" \ \"))))(Projector((id bc77e892-7c98-48bb-b784-08e35448222d)(kind \ - Checkbox)(syntax(Tile((id \ - 8a6a8e54-c3b6-4b92-a604-60131c28bc46)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 956397c8-cc82-4bc1-9de0-8374a2a0cbc0)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ b9f64298-73f8-44b2-8776-ca0b6a0a194e)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 8f34cd14-23e6-47ae-b1fc-18eec1c1475d)(content(Whitespace\" \ \"))))(Projector((id 64ded795-df61-4471-a92e-311d06906886)(kind \ - Checkbox)(syntax(Tile((id \ - 76f0191b-dd92-492f-8737-dd740bc01120)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 7a10b043-3927-4325-9968-8783edf44ee7)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Tile((id \ ec02908a-ab48-4a93-ba6a-d150e10657df)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ @@ -2195,97 +1997,73 @@ let out : string * Haz3lcore.PersistentSegment.t = 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 682c4831-080c-40e7-b3e9-ab20c21c561f)(content(Whitespace\" \ \"))))(Projector((id 35f7da67-373c-4b90-b528-5b1203512fc6)(kind \ - Checkbox)(syntax(Tile((id \ - a9a7cb95-0955-44d6-a61e-91974554d7bc)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 50c4d1f2-66c6-4096-8209-07878e198c87)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 467576a3-8496-43ec-ab0b-e9be29340b6c)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ f8d25fbf-8789-49ae-a3b6-ae4a145029fb)(content(Whitespace\" \ \"))))(Projector((id 7543142f-84f9-4219-82aa-c48643f50c79)(kind \ - Checkbox)(syntax(Tile((id \ - 9da65f36-d06a-4847-aa10-8dc180cc5651)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ d780778b-f4ee-46cb-94aa-e50a918ca2bb)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 710a89c4-6f97-4850-b782-ad0798bf37b5)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ a6bb536c-daed-44a2-9d7c-9902fbcc1b79)(content(Whitespace\" \ \"))))(Projector((id a13c5362-fe0c-4a9a-8ae6-334b19614478)(kind \ - Checkbox)(syntax(Tile((id \ - f5392683-8255-41ad-8b6e-c171a79614e3)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ ea9a6fab-55d3-4180-b25d-0a1f1254c670)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 100a9087-86f2-4a83-a9e6-027a3340fdcf)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 51140c20-6541-4489-a8fc-a2970cf45dc6)(content(Whitespace\" \ \"))))(Projector((id e4b37959-7063-4d26-b1e9-430ef5ce8989)(kind \ - Checkbox)(syntax(Tile((id \ - b512141a-096f-4f2d-9c33-71c8e1ceaf1a)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 2808a0c4-93f9-4689-8f07-d0fbc5110c59)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 31549017-363d-4ae5-8c53-2aff8152de99)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ ccd35f58-8301-4d0d-a06a-d1f86dacbae2)(content(Whitespace\" \ \"))))(Projector((id a270491e-2610-4fff-a090-4dbcc9cd73c5)(kind \ - Checkbox)(syntax(Tile((id \ - 7c302459-0792-4446-8e3a-2e100f0be30d)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ e7c6d1e9-f0dc-489b-9127-f2537b6c708c)(label(true))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 37ba9154-f82b-4150-9be2-28182dca4c05)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 97dcaa9b-9e2c-4b8a-8512-e978a7efff7b)(content(Whitespace\" \ \"))))(Projector((id 365da6ac-2f11-449b-83a7-e9e3326293ba)(kind \ - Checkbox)(syntax(Tile((id \ - 0e01c397-9b6e-4af8-b8cb-75627b7b75cf)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ 28d97b26-4489-42c9-8bac-917d1b89181c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 45f76413-14b5-4241-8122-12bce2f2b29a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ 1a13ea31-ffc6-4590-bcd0-20f222b4fd2c)(content(Whitespace\" \ \"))))(Projector((id cd3cfff0-040a-4d53-a920-e1d6a613a5ab)(kind \ - Checkbox)(syntax(Tile((id \ - 6893638a-b842-48db-96f3-2480356b1981)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ cfd43903-0946-47a7-8c29-5134a3d826a1)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\")))(Tile((id \ + Exp))))))(shards(0))(children())))))(model\"()\")))(Tile((id \ 33451dcb-4a65-485a-a829-b8e672e7204a)(label(,))(mold((out \ Exp)(in_())(nibs(((shape(Concave 44))(sort Exp))((shape(Concave \ 44))(sort Exp))))))(shards(0))(children())))(Secondary((id \ d92bdcf7-af71-4f0e-953e-578a3514367c)(content(Whitespace\" \ \"))))(Projector((id 1df28c82-f673-4875-8767-cf1a37d88dbf)(kind \ - Checkbox)(syntax(Tile((id \ - f04cc022-80aa-4eaf-a625-0383fd71af3b)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Checkbox)(syntax((Tile((id \ bcc77d94-fa0c-4fce-a50a-7e2d6ee1fe0c)(label(false))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0))(children())))))))))(model\"()\"))))))))(Secondary((id \ + Exp))))))(shards(0))(children())))))(model\"()\"))))))))(Secondary((id \ e9e7c536-c91a-46e2-9026-743440d8155f)(content(Whitespace\"\\n\")))))))))(Secondary((id \ 726f9509-78e1-4e54-8717-7f3e3b3a6acd)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -2365,10 +2143,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 5dbb26de-08cd-4fb3-bb21-0774187914ed)(label(:))(mold((out \ Pat)(in_())(nibs(((shape(Concave 24))(sort Pat))((shape(Concave \ 24))(sort Typ))))))(shards(0))(children())))(Projector((id \ - f83040a3-29e1-4c16-9744-9cc474ac5783)(kind Fold)(syntax(Tile((id \ - 0616e514-27d0-4db8-b653-b1f01652d0c2)(label(\"(\"\")\"))(mold((out \ - Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0 1))(children(((Tile((id \ + f83040a3-29e1-4c16-9744-9cc474ac5783)(kind Fold)(syntax((Tile((id \ 77dba809-b402-4b46-9a11-33677d7d4d67)(label(\"(\"\")\"))(mold((out \ Typ)(in_(Typ))(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ Typ))))))(shards(0 1))(children(((Tile((id \ @@ -2492,7 +2267,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 39))(sort Typ))))))(shards(0))(children())))(Tile((id \ 848071fb-a73d-4da9-88ce-3c2116bab60f)(label(Bool))(mold((out \ Typ)(in_())(nibs(((shape Convex)(sort Typ))((shape Convex)(sort \ - Typ))))))(shards(0))(children()))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + Typ))))))(shards(0))(children()))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ db4a2712-f499-4c58-ab2d-466ac1b995e0)(content(Whitespace\" \ \")))))))))(Secondary((id \ @@ -2571,10 +2346,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \")))))((Secondary((id \ 96816668-3fe8-4aad-bed4-c174a8b2e89d)(content(Whitespace\" \ \"))))(Projector((id 5117b326-5690-4faf-bca7-a3596e6e8380)(kind \ - Fold)(syntax(Tile((id \ - 846974a2-fbd1-491e-be7c-1693db4f8d52)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + Fold)(syntax((Tile((id \ 92294fa1-6064-421e-a45a-39b91d595c5f)(label(fun ->))(mold((out \ Exp)(in_(Pat))(nibs(((shape Convex)(sort Exp))((shape(Concave \ 37))(sort Exp))))))(shards(0 1))(children(((Secondary((id \ @@ -2820,7 +2592,7 @@ let out : string * Haz3lcore.PersistentSegment.t = d4eea502-9a86-4904-8b22-0347bd3662a1)(content(Whitespace\"\\n\")))))))))(Secondary((id \ 6f5b32e5-4e0a-4638-9b28-11f81f818bac)(content(Whitespace\" \ \"))))(Secondary((id \ - 8f47794d-7fac-47bf-9217-c928cc5ae960)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 8f47794d-7fac-47bf-9217-c928cc5ae960)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Secondary((id \ f8d63892-54ba-4ed9-839c-ad97d1dc0ce2)(content(Whitespace\" \ \")))))))))(Secondary((id \ diff --git a/src/web/init/docs/Tuples.ml b/src/web/init/docs/Tuples.ml index 881c494f10..af2cfc6e21 100644 --- a/src/web/init/docs/Tuples.ml +++ b/src/web/init/docs/Tuples.ml @@ -1964,10 +1964,7 @@ let out : string * Haz3lcore.PersistentSegment.t = duplicate labels in from_lvs (projection is stuck) \ #\"))))(Secondary((id \ 4e86199c-84a3-49ec-8858-ad4e2b014ba5)(content(Whitespace\"\\n\"))))(Projector((id \ - e366fec9-844e-41d2-8813-d5bc4df2678a)(kind Fold)(syntax(Tile((id \ - bd0286c8-13b9-47b8-8130-f728bda1a1fe)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e366fec9-844e-41d2-8813-d5bc4df2678a)(kind Fold)(syntax((Tile((id \ fb462432-1cf8-41cb-987b-5153f0b5d220)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Secondary((id \ @@ -2090,7 +2087,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 813c3c0f-81da-43a7-a105-264e0b4656ed)(label(x))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children())))(Secondary((id \ - f3c16d83-03d4-4bea-8cb4-1af6f466d0bb)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + f3c16d83-03d4-4bea-8cb4-1af6f466d0bb)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Tile((id \ 92d4d7ee-a0e9-4b25-b118-e1063511edb3)(label(\";\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 35))(sort Exp))((shape(Concave \ @@ -2608,10 +2605,7 @@ let out : string * Haz3lcore.PersistentSegment.t = project_labels, omit_labels resulting in singleton unlabeled tuple \ #\"))))(Secondary((id \ a9f22d23-eb22-4724-92fc-8fcc3d651963)(content(Whitespace\"\\n\"))))(Projector((id \ - 3830e812-65fa-4b75-b3bb-d0b221c4ea33)(kind Fold)(syntax(Tile((id \ - 06308df1-ae7d-4496-b065-0df233cd2337)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + 3830e812-65fa-4b75-b3bb-d0b221c4ea33)(kind Fold)(syntax((Tile((id \ 26824393-e80c-4e51-a257-ecb1912e9c63)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Secondary((id \ @@ -2733,7 +2727,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 3900a503-2071-47e7-857d-ced2cc1d32f4)(label(`c`))(mold((out \ Exp)(in_())(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0))(children()))))))))(Secondary((id \ - 4e7f49e8-9618-4eae-9204-fe591e110564)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + 4e7f49e8-9618-4eae-9204-fe591e110564)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\")))(Tile((id \ ef7188d3-4046-459c-bbe2-e7a314aaafbf)(label(\";\"))(mold((out \ Exp)(in_())(nibs(((shape(Concave 35))(sort Exp))((shape(Concave \ @@ -2868,10 +2862,7 @@ let out : string * Haz3lcore.PersistentSegment.t = 7426a367-b925-4afc-a808-0ac6ef218b81)(content(Comment\"# Static \ Errors #\"))))(Secondary((id \ 71590786-06fd-4327-937b-3a0f66f57624)(content(Whitespace\"\\n\"))))(Projector((id \ - e29055eb-7679-4a41-a034-ae5d36b9e854)(kind Fold)(syntax(Tile((id \ - 3a22c0b8-7f3c-4f17-8966-2b2464ac4c32)(label(\"(\"\")\"))(mold((out \ - Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ - Exp))))))(shards(0 1))(children(((Tile((id \ + e29055eb-7679-4a41-a034-ae5d36b9e854)(kind Fold)(syntax((Tile((id \ 2eda6fe3-5ef4-4777-8046-9fac4b50dd96)(label(\"(\"\")\"))(mold((out \ Exp)(in_(Exp))(nibs(((shape Convex)(sort Exp))((shape Convex)(sort \ Exp))))))(shards(0 1))(children(((Secondary((id \ @@ -3408,7 +3399,7 @@ let out : string * Haz3lcore.PersistentSegment.t = \"))))(Secondary((id \ aade156c-3180-462e-adc2-830468a66d3f)(content(Whitespace\" \ \"))))(Secondary((id \ - b2365e57-2738-4cb0-b7f4-c1d14c857a6e)(content(Whitespace\"\\n\")))))))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ + b2365e57-2738-4cb0-b7f4-c1d14c857a6e)(content(Whitespace\"\\n\")))))))))))(model\"((text\\\"\\\\226\\\\139\\\\177\\\")(expanded \ false)(always_render false))\"))))"; backup_text = "# Tuples can have labels, including ones with special characters or \ diff --git a/src/web/www/style/projectors/proj-base.css b/src/web/www/style/projectors/proj-base.css index 4c764c800e..6111a20d00 100644 --- a/src/web/www/style/projectors/proj-base.css +++ b/src/web/www/style/projectors/proj-base.css @@ -10,6 +10,7 @@ @import "proj-slider.css"; @import "proj-livelit.css"; @import "proj-csv.css"; +@import "proj-vlist.css"; /* Default projector styles */ diff --git a/src/web/www/style/projectors/proj-vlist.css b/src/web/www/style/projectors/proj-vlist.css new file mode 100644 index 0000000000..7b6dcd842f --- /dev/null +++ b/src/web/www/style/projectors/proj-vlist.css @@ -0,0 +1,79 @@ +/* Vertical-list projector + * + * A simple stack of splice editors with +/- buttons. */ + +.projector .vlist { + box-sizing: border-box; + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 0.35em; + min-width: max-content; + padding: 0.45em 0.75em 0.55em 0.85em; +} + +.projector .vlist-buttons { + align-self: flex-end; + display: flex; + gap: 4px; + justify-content: flex-end; + margin-bottom: 0.05em; +} + +.projector .vlist-btn { + width: 1.5em; + height: 1.5em; + font: inherit; + cursor: pointer; + border: 1px solid var(--BG4); + background: var(--BG1); + color: var(--F1); + border-radius: 3px; + line-height: 1; + padding: 0; +} + +.projector .vlist-btn:disabled { + opacity: 0.4; + cursor: not-allowed; +} + +.projector .vlist-row { + display: flex; + align-items: center; +} + +/* Splice editor viewport + * + * Splice divs are the positioning context for their inner caret, + * selection, indication, and error decorations. All such decorations + * are CSS-absolutely-positioned using pixel coordinates derived from + * splice-local text grid coordinates. */ + +.splice-container { + position: relative; + display: inline-block; + min-width: 2em; + min-height: 1em; + cursor: text; +} + +.projector .vlist .splice-container.inline-editor-wrapper { + padding: 0.15em 0.45em; +} + +.splice-container .splice-editor-surface { + position: relative; + display: inline-block; +} + +.splice-container .splice-editor-surface > .code { + position: relative; +} + +.splice-container .splice-editor-surface > .code-deco { + position: absolute; + top: 0; + left: 0; + pointer-events: none; +} diff --git a/test/EditingPrelude.re b/test/EditingPrelude.re index 45910736ae..ca268fd1b4 100644 --- a/test/EditingPrelude.re +++ b/test/EditingPrelude.re @@ -20,7 +20,8 @@ and equal_piece = (a: piece, b: piece) => { | (Projector(p1), Projector(p2)) => p1.kind == p2.kind && p1.model == p2.model - && equal_piece(p1.syntax, p2.syntax) + && equal_segment(p1.syntax, p2.syntax) + | (Splice(s1), Splice(s2)) => equal_segment(s1.content, s2.content) | _ => false }; }; diff --git a/test/Test_Editing.re b/test/Test_Editing.re index 4de31dd908..470aeda41e 100644 --- a/test/Test_Editing.re +++ b/test/Test_Editing.re @@ -109,6 +109,169 @@ let test = (~name, ~acts, ~goal): test_case(_) => ) ); +let parse_segment = (s: string): Segment.t => + switch (Parser.to_zipper(~zipper_init=Zipper.init(), s)) { + | Some(z) => Zipper.unselect_and_zip(z) + | None => Alcotest.fail("Failed to parse segment: " ++ s) + }; + +let mk_vlist_projector_zipper = + (items: list(string)): (Zipper.t, list(Id.t)) => { + let splice_piece = (item: string) => Piece.mk_splice(parse_segment(item)); + let comma_piece = () => Piece.mk_tile(Form.get(CommaExp), []); + let rec interleave = (pieces: list(Piece.t)): list(Piece.t) => + switch (pieces) { + | [] => [] + | [p] => [p] + | [p, ...rest] => [p, comma_piece(), ...interleave(rest)] + }; + let splices = List.map(splice_piece, items); + let splice_ids = + List.map( + fun + | Piece.Splice(s) => s.id + | _ => Id.invalid, + splices, + ); + let list_piece = + Piece.mk_tile(Form.get(ListLitExp), [interleave(splices)]); + let projector = + ProjectorCore.mk( + ~id=Id.mk(), + ProjectorCore.Kind.VList, + [list_piece], + "()", + ); + (Zipper.unzip([Piece.Projector(projector)]), splice_ids); +}; + +let vlist_syntax = (items: list(string)): Segment.t => { + let splice_piece = (item: string) => Piece.mk_splice(parse_segment(item)); + let comma_piece = () => Piece.mk_tile(Form.get(CommaExp), []); + let empty_list_piece = () => + Base.Tile({ + id: Id.mk(), + label: ["[]"], + mold: Mold.mk_op(Sort.Exp, []), + shards: [0], + children: [], + }); + let rec interleave = (pieces: list(Piece.t)): list(Piece.t) => + switch (pieces) { + | [] => [] + | [p] => [p] + | [p, ...rest] => [p, comma_piece(), ...interleave(rest)] + }; + switch (interleave(List.map(splice_piece, items))) { + | [] => [empty_list_piece()] + | inner => [Piece.mk_tile(Form.get(ListLitExp), [inner])] + }; +}; + +let vlist_term = (items: list(string)): Language.Any.t => + switch (MakeTerm.for_projection(vlist_syntax(items))) { + | Some(term) => term + | None => Alcotest.fail("Failed to parse VList syntax") + }; + +let vlist_syntax_from_splices = (splices: list(Base.splice)): Segment.t => { + let comma_piece = () => Piece.mk_tile(Form.get(CommaExp), []); + let empty_list_piece = () => + Base.Tile({ + id: Id.mk(), + label: ["[]"], + mold: Mold.mk_op(Sort.Exp, []), + shards: [0], + children: [], + }); + let rec interleave = (pieces: list(Piece.t)): list(Piece.t) => + switch (pieces) { + | [] => [] + | [p] => [p] + | [p, ...rest] => [p, comma_piece(), ...interleave(rest)] + }; + switch (interleave(List.map((s: Base.splice) => Base.Splice(s), splices))) { + | [] => [empty_list_piece()] + | inner => [Piece.mk_tile(Form.get(ListLitExp), [inner])] + }; +}; + +let vlist_term_from_splices = (splices: list(Base.splice)): Language.Any.t => + switch (MakeTerm.for_projection(vlist_syntax_from_splices(splices))) { + | Some(term) => term + | None => Alcotest.fail("Failed to parse VList splice syntax") + }; + +let splice_with_content = (s: Base.splice, content: string): Base.splice => { + id: s.id, + content: parse_segment(content), +}; + +let rec collect_splices = (seg: Segment.t): list(Base.splice) => + List.concat_map( + (p: Piece.t) => + switch (p) { + | Splice(s) => [s, ...collect_splices(s.content)] + | Tile(t) => List.concat_map(collect_splices, t.children) + | Projector(pr) => collect_splices(pr.syntax) + | Grout(_) + | Secondary(_) => [] + }, + seg, + ); + +let vlist_splices = (z: Zipper.t): list(Base.splice) => + collect_splices(Zipper.unselect_and_zip(z)); + +let splice_content_text = (z: Zipper.t, splice_idx: int): string => + switch (List.nth_opt(vlist_splices(z), splice_idx)) { + | Some(s) => + Printer.of_segment( + ~holes=convex_char, + ~concave_holes=concave_char, + s.content, + ) + | None => + let segment = Zipper.unselect_and_zip(z); + Alcotest.fail( + "Missing splice at index " + ++ string_of_int(splice_idx) + ++ " in " + ++ Printer.of_segment( + ~holes=convex_char, + ~concave_holes=concave_char, + segment, + ), + ); + }; + +let is_boundary_grout = (content: Segment.t): (bool, bool) => + switch (content, ListUtil.last_opt(content)) { + | ([], _) => (false, false) + | ([Grout(_), ..._], Some(Grout(_))) => (true, true) + | ([Grout(_), ..._], _) => (true, false) + | (_, Some(Grout(_))) => (false, true) + | _ => (false, false) + }; + +let check_splice_edge = + (~name: string, ~id: Id.t, ~left_edge: bool, z: Zipper.t): unit => { + Alcotest.check( + Alcotest.bool, + name ++ " splice context", + true, + Zipper.splice_context(z) == Some(id), + ); + let at_left_edge = z.caret == Outer && fst(z.relatives.siblings) == []; + let at_right_edge = z.caret == Outer && snd(z.relatives.siblings) == []; + Alcotest.check( + Alcotest.bool, + name ++ " edge", + true, + left_edge ? at_left_edge : at_right_edge, + ); +}; + let basic_tests = [ test( ~name="Initialize caret position from string", @@ -1031,6 +1194,468 @@ let module_tests = [ ), ]; +let projector_tests = [ + test_case( + "VList moving right exits at left edge of next splice", + `Quick, + () => { + let (z, splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 0), + Point.{ + row: 0, + col: 1, + }, + ), + ), + ], + ); + let first_id = List.nth(splice_ids, 0); + check_splice_edge( + ~name="first splice", + ~id=first_id, + ~left_edge=false, + z, + ); + let z = perform(z, [Move(Local(Right, ByChar))]); + let second_id = List.nth(splice_ids, 1); + check_splice_edge( + ~name="second splice", + ~id=second_id, + ~left_edge=true, + z, + ); + }, + ), + test_case( + "VList splice supports 3 -> 33 edit", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["3"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 0), + Point.{ + row: 0, + col: 1, + }, + ), + ), + Insert("3"), + ], + ); + Alcotest.check( + Alcotest.string, + "third splice text", + "33", + splice_content_text(z, 0), + ); + ignore(MakeTerm.go(Zipper.unselect_and_zip(z))); + }, + ), + test_case( + "VList [1,2,3] edit third item 3 -> 33", + `Quick, + () => { + let (z, splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 2), + Point.{ + row: 0, + col: 1, + }, + ), + ), + ], + ); + let target_id = + switch (List.nth_opt(splice_ids, 2)) { + | Some(id) => id + | None => Id.invalid + }; + Alcotest.check( + Alcotest.bool, + "Moved into third splice", + true, + Zipper.splice_context(z) == Some(target_id), + ); + let z = perform(z, [Insert("3")]); + Alcotest.check( + Alcotest.string, + "third splice text", + "33", + splice_content_text(z, 2), + ); + ignore(MakeTerm.go(Zipper.unselect_and_zip(z))); + }, + ), + test_case( + "VList editing does not add boundary grout around splice content", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 2), + Point.{ + row: 0, + col: 1, + }, + ), + ), + Insert("3"), + ], + ); + switch (List.nth_opt(vlist_splices(z), 2)) { + | None => Alcotest.fail("Missing third splice") + | Some(s) => + let (left_grout, right_grout) = is_boundary_grout(s.content); + Alcotest.check( + Alcotest.bool, + "left boundary grout", + false, + left_grout, + ); + Alcotest.check( + Alcotest.bool, + "right boundary grout", + false, + right_grout, + ); + }; + }, + ), + test_case( + "VList inner splice tile has cursor info", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 2), + Point.{ + row: 0, + col: 1, + }, + ), + ), + Insert("3"), + ], + ); + let MakeTerm.{term, _} = MakeTerm.go(Zipper.unselect_and_zip(z)); + let info_map = + Language.Statics.mk( + Language.CoreSettings.on, + Language.Builtins.ctx_init(Some(Int)), + term, + ); + Alcotest.check( + Alcotest.bool, + "cursor info exists", + true, + Indicated.ci_of(z, info_map) != None, + ); + }, + ), + test_case( + "VList [1,2,3] can move into third splice", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 2), + Point.{ + row: 0, + col: 1, + }, + ), + ), + ], + ); + ignore(MakeTerm.go(Zipper.unselect_and_zip(z))); + }, + ), + test_case( + "VList splice insertion context has Exp sort", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 2), + Point.{ + row: 0, + col: 1, + }, + ), + ), + ], + ); + Alcotest.check( + Alcotest.string, + "splice sort", + Sort.show(Exp), + Sort.show(Relatives.sort(z.relatives)), + ); + }, + ), + test_case( + "Removing VList projector preserves list item contents", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let z = perform(z, [Project(RemoveIndicated)]); + Alcotest.check( + Alcotest.string, + "unprojected list", + "[1,2,3]¦", + printer(z), + ); + }, + ), + test_case( + "Removing VList projector after splice edit preserves list item contents", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 2), + Point.{ + row: 0, + col: 1, + }, + ), + ), + Insert("3"), + Project(RemoveIndicated), + ], + ); + Alcotest.check( + Alcotest.string, + "unprojected edited list", + "[1,2,33]¦", + printer(z), + ); + }, + ), + test_case( + "VList SetSyntax updates while caret is inside splice", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 1), + Point.{ + row: 0, + col: 1, + }, + ), + ), + Project(SetSyntax(0, vlist_term(["1", "2", "3", "?"]), true)), + ], + ); + Alcotest.check( + Alcotest.int, + "splice count", + 4, + List.length(vlist_splices(z)), + ); + }, + ), + test_case( + "VList SetSyntax preserves existing splice segments by annotation id", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1", "2"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 1), + Point.{ + row: 0, + col: 1, + }, + ), + ), + Insert("3"), + ], + ); + let splices = vlist_splices(z); + let replacement_term = + splices + |> List.map((s: Base.splice) => splice_with_content(s, "999")) + |> vlist_term_from_splices; + let z = perform(z, [Project(SetSyntax(0, replacement_term, true))]); + Alcotest.check( + Alcotest.string, + "preserved edited splice", + "23", + splice_content_text(z, 1), + ); + }, + ), + test_case( + "VList SetSyntax adds fresh splice when no original id exists", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1"]); + let new_splice = + switch (Piece.mk_splice(parse_segment("?"))) { + | Splice(s) => s + | _ => Alcotest.fail("Expected splice") + }; + let term = vlist_term_from_splices(vlist_splices(z) @ [new_splice]); + let z = perform(z, [Project(SetSyntax(0, term, true))]); + Alcotest.check( + Alcotest.int, + "splice count", + 2, + List.length(vlist_splices(z)), + ); + Alcotest.check( + Alcotest.string, + "fresh splice content", + "?", + splice_content_text(z, 1), + ); + }, + ), + test_case( + "VList SetSyntax removes a preserved splice", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1", "2", "3"]); + let remaining = + switch (vlist_splices(z)) { + | [first, _second, third] => [first, third] + | _ => Alcotest.fail("Expected three splices") + }; + let z = + perform( + z, + [Project(SetSyntax(0, vlist_term_from_splices(remaining), true))], + ); + Alcotest.check( + Alcotest.int, + "splice count", + 2, + List.length(vlist_splices(z)), + ); + Alcotest.check(Alcotest.string, "second remaining", "3", splice_content_text(z, 1)); + }, + ), + test_case( + "VList SetSyntax can produce an empty list", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["1"]); + let z = perform(z, [Project(SetSyntax(0, vlist_term([]), true))]); + Alcotest.check( + Alcotest.int, + "splice count", + 0, + List.length(vlist_splices(z)), + ); + let z = perform(z, [Project(RemoveIndicated)]); + Alcotest.check( + Alcotest.string, + "unprojected empty list", + "[]¦", + printer(z), + ); + }, + ), + test_case( + "VList splice drag resize creates a splice-local selection", + `Quick, + () => { + let (z, _splice_ids) = mk_vlist_projector_zipper(["123"]); + let z = + perform( + z, + [ + Move( + SplicePoint( + (0, 0), + Point.{ + row: 0, + col: 0, + }, + ), + ), + Select( + Resize( + SplicePoint( + (0, 0), + Point.{ + row: 0, + col: 2, + }, + ), + ), + ), + ], + ); + Alcotest.check( + Alcotest.bool, + "selection exists", + true, + z.selection.content != [], + ); + Alcotest.check( + Alcotest.bool, + "still in splice", + true, + Option.is_some(Zipper.splice_context(z)), + ); + }, + ), +]; + let tests = [ ("Editing.Basic", basic_tests), ("Editing.Insertion", insertion_tests), @@ -1038,4 +1663,5 @@ let tests = [ ("Editing.Move", move_tests), ("Editing.Selection", selection_tests), ("Editing.Module", module_tests), + ("Editing.Projector", projector_tests), ];