Skip to content

Commit 816cc64

Browse files
committed
Refactor quotation of MSets,FMaps to use MC{MSets,FSets}
Hopefully this will speed things up slightly <details><summary>Timing Diff</summary> <p> ``` After | Peak Mem | File Name | Before | Peak Mem || Change || Change (mem) | % Change | % Change (mem) ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 32m49.24s | 1809576 ko | Total Time / Peak Mem | 35m43.03s | 1925816 ko || -2m53.78s || -116240 ko | -8.10% | -6.03% ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 0m10.15s | 1326900 ko | ToTemplate/Coq/MSets.vo | 1m36.58s | 1925816 ko || -1m26.42s || -598916 ko | -89.49% | -31.09% 0m04.62s | 895960 ko | ToTemplate/Coq/FSets.vo | 1m01.77s | 1438240 ko || -0m57.15s || -542280 ko | -92.52% | -37.70% 0m03.77s | 936128 ko | ToTemplate/Common/Universes.vo | 0m18.76s | 955168 ko || -0m14.99s || -19040 ko | -79.90% | -1.99% 0m02.69s | 905776 ko | ToTemplate/Common/Kernames.vo | 0m14.95s | 912648 ko || -0m12.25s || -6872 ko | -82.00% | -0.75% 0m45.20s | 1371440 ko | ToTemplate/QuotationOf/Common/EnvironmentTyping/Sig.vo | 0m56.27s | 1371512 ko || -0m11.07s || -72 ko | -19.67% | -0.00% 1m07.85s | 1119888 ko | ToTemplate/QuotationOf/Common/Universes/ConstraintSetOrdProp/Instances.vo | 1m18.12s | 1121528 ko || -0m10.27s || -1640 ko | -13.14% | -0.14% 0m36.76s | 1197356 ko | ToTemplate/QuotationOf/Common/Environment/Sig.vo | 0m47.34s | 1197080 ko || -0m10.58s || 276 ko | -22.34% | +0.02% 0m07.48s | 829680 ko | ToTemplate/QuotationOf/Utils/MCMSets/Sig.vo | N/A | N/A || +0m07.48s || 829680 ko | ∞ | ∞ 4m32.42s | 1508112 ko | ToTemplate/QuotationOf/Common/Kernames/KernameMap/Instances.vo | 4m27.25s | 1506652 ko || +0m05.17s || 1460 ko | +1.93% | +0.09% 0m24.74s | 919412 ko | ToTemplate/QuotationOf/Template/Ast/Env/Instances.vo | 0m30.38s | 918952 ko || -0m05.64s || 460 ko | -18.56% | +0.05% 0m16.06s | 1134552 ko | ToTemplate/Template/Typing.vo | 0m20.44s | 1144740 ko || -0m04.38s || -10188 ko | -21.42% | -0.88% 0m14.20s | 894776 ko | ToTemplate/QuotationOf/Template/Typing/TemplateGlobalMaps/Instances.vo | 0m18.31s | 898256 ko || -0m04.10s || -3480 ko | -22.44% | -0.38% 0m04.82s | 799608 ko | ToTemplate/QuotationOf/Utils/MCFSets/Sig.vo | N/A | N/A || +0m04.82s || 799608 ko | ∞ | ∞ 3m45.38s | 1809576 ko | ToTemplate/QuotationOf/Coq/FSets/FMapAVL/Sig.vo | 3m41.87s | 1808760 ko || +0m03.50s || 816 ko | +1.58% | +0.04% 1m53.08s | 1481832 ko | ToTemplate/QuotationOf/Common/Universes/ConstraintSet/Instances.vo | 1m49.67s | 1481272 ko || +0m03.40s || 560 ko | +3.10% | +0.03% 0m03.56s | 779808 ko | ToTemplate/QuotationOf/Common/Kernames/KernameMapDecide/Instances.vo | N/A | N/A || +0m03.56s || 779808 ko | ∞ | ∞ 0m03.48s | 780768 ko | ToTemplate/QuotationOf/Common/Kernames/KernameSetExtraDecide/Instances.vo | N/A | N/A || +0m03.48s || 780768 ko | ∞ | ∞ 0m03.41s | 785624 ko | ToTemplate/QuotationOf/Common/Universes/LevelSetExtraDecide/Instances.vo | N/A | N/A || +0m03.41s || 785624 ko | ∞ | ∞ 0m03.29s | 778348 ko | ToTemplate/QuotationOf/Common/Universes/LevelSetExtraOrdProp/Instances.vo | N/A | N/A || +0m03.29s || 778348 ko | ∞ | ∞ 0m03.25s | 784736 ko | ToTemplate/QuotationOf/Common/Universes/ConstraintSetExtraDecide/Instances.vo | N/A | N/A || +0m03.25s || 784736 ko | ∞ | ∞ 0m03.24s | 778800 ko | ToTemplate/QuotationOf/Common/Universes/LevelExprSetExtraOrdProp/Instances.vo | N/A | N/A || +0m03.24s || 778800 ko | ∞ | ∞ 0m24.45s | 1363716 ko | ToTemplate/Common/EnvironmentTyping.vo | 0m26.98s | 1374772 ko || -0m02.53s || -11056 ko | -9.37% | -0.80% 0m24.41s | 949284 ko | ToTemplate/QuotationOf/Coq/Structures/OrdersFacts/Sig.vo | 0m22.23s | 950400 ko || +0m02.17s || -1116 ko | +9.80% | -0.11% 0m10.80s | 899512 ko | ToTemplate/QuotationOf/Template/Typing/TemplateEnvTyping/Instances.vo | 0m13.75s | 899380 ko || -0m02.94s || 132 ko | -21.45% | +0.01% 0m02.80s | 772744 ko | ToTemplate/QuotationOf/Common/Kernames/KernameSetExtraOrdProp/Instances.vo | N/A | N/A || +0m02.79s || 772744 ko | ∞ | ∞ 0m02.44s | 776888 ko | ToTemplate/QuotationOf/Common/Universes/ConstraintSetExtraOrdProp/Instances.vo | N/A | N/A || +0m02.43s || 776888 ko | ∞ | ∞ 1m44.59s | 1485384 ko | ToTemplate/QuotationOf/Common/Kernames/KernameSet/Instances.vo | 1m43.37s | 1483736 ko || +0m01.21s || 1648 ko | +1.18% | +0.11% 1m25.91s | 1544648 ko | ToTemplate/QuotationOf/Coq/MSets/MSetList/Sig.vo | 1m24.65s | 1543796 ko || +0m01.25s || 852 ko | +1.48% | +0.05% 1m12.56s | 1087324 ko | ToTemplate/QuotationOf/Common/Kernames/KernameSetOrdProp/Instances.vo | 1m11.24s | 1087592 ko || +0m01.32s || -268 ko | +1.85% | -0.02% 1m09.02s | 1194132 ko | ToTemplate/QuotationOf/Common/Universes/LevelExprSet/Instances.vo | 1m07.47s | 1190520 ko || +0m01.54s || 3612 ko | +2.29% | +0.30% 0m14.03s | 838844 ko | ToTemplate/QuotationOf/Coq/MSets/MSetFacts/Sig.vo | 0m12.82s | 839008 ko || +0m01.20s || -164 ko | +9.43% | -0.01% 0m08.24s | 800288 ko | ToTemplate/QuotationOf/Coq/MSets/MSetInterface/Sig.vo | 0m07.11s | 798764 ko || +0m01.12s || 1524 ko | +15.89% | +0.19% 0m05.32s | 825176 ko | ToTemplate/QuotationOf/Template/Ast/TemplateLookup/Instances.vo | 0m07.11s | 825104 ko || -0m01.79s || 72 ko | -25.17% | +0.00% 0m05.25s | 765576 ko | ToTemplate/QuotationOf/Coq/Structures/Equalities/Sig.vo | 0m03.97s | 764292 ko || +0m01.27s || 1284 ko | +32.24% | +0.16% 0m05.25s | 1037320 ko | ToTemplate/Template/TermEquality.vo | 0m07.14s | 1046940 ko || -0m01.88s || -9620 ko | -26.47% | -0.91% 0m05.02s | 987268 ko | ToTemplate/Common/Environment.vo | 0m06.58s | 991972 ko || -0m01.56s || -4704 ko | -23.70% | -0.47% 0m04.89s | 1035036 ko | ToTemplate/Template/WfAst.vo | 0m06.60s | 1043104 ko || -0m01.71s || -8068 ko | -25.90% | -0.77% 0m03.75s | 772528 ko | ToTemplate/QuotationOf/Coq/Structures/OrdersTac/Sig.vo | 0m04.79s | 772052 ko || -0m01.04s || 476 ko | -21.71% | +0.06% 0m03.37s | 772656 ko | ToTemplate/Coq/Init.vo | 0m02.31s | 772388 ko || +0m01.06s || 268 ko | +45.88% | +0.03% 0m02.27s | 1031248 ko | ToTemplate/Template/Ast.vo | 0m03.34s | 1040524 ko || -0m01.06s || -9276 ko | -32.03% | -0.89% 0m01.47s | 769112 ko | ToTemplate/QuotationOf/Common/Kernames/KernameMapExtraFact/Instances.vo | N/A | N/A || +0m01.47s || 769112 ko | ∞ | ∞ 2m12.82s | 1766888 ko | ToTemplate/QuotationOf/Coq/MSets/MSetAVL/Sig.vo | 2m12.90s | 1765000 ko || -0m00.08s || 1888 ko | -0.06% | +0.10% 1m42.66s | 1481440 ko | ToTemplate/QuotationOf/Common/Universes/LevelSet/Instances.vo | 1m41.84s | 1480596 ko || +0m00.81s || 844 ko | +0.80% | +0.05% 1m14.80s | 1102060 ko | ToTemplate/QuotationOf/Common/Universes/LevelExprSetOrdProp/Instances.vo | 1m14.99s | 1102984 ko || -0m00.18s || -924 ko | -0.25% | -0.08% 1m11.16s | 1070524 ko | ToTemplate/QuotationOf/Common/Universes/LevelSetOrdProp/Instances.vo | 1m11.13s | 1070236 ko || +0m00.03s || 288 ko | +0.04% | +0.02% 0m56.93s | 1246896 ko | ToTemplate/QuotationOf/Coq/MSets/MSetProperties/Sig.vo | 0m57.32s | 1246120 ko || -0m00.39s || 776 ko | -0.68% | +0.06% 0m46.61s | 1084424 ko | ToTemplate/QuotationOf/Coq/FSets/FMapList/Sig.vo | 0m45.78s | 1084136 ko || +0m00.82s || 288 ko | +1.81% | +0.02% 0m21.07s | 911000 ko | ToTemplate/QuotationOf/Coq/Structures/OrdersAlt/Sig.vo | 0m21.81s | 911652 ko || -0m00.73s || -652 ko | -3.39% | -0.07% 0m20.21s | 909132 ko | ToTemplate/QuotationOf/Coq/MSets/MSetDecide/Sig.vo | 0m19.28s | 909320 ko || +0m00.92s || -188 ko | +4.82% | -0.02% 0m14.95s | 855664 ko | ToTemplate/QuotationOf/Coq/FSets/FMapFacts/Sig.vo | 0m14.40s | 855968 ko || +0m00.54s || -304 ko | +3.81% | -0.03% 0m12.37s | 796096 ko | ToTemplate/QuotationOf/Common/Kernames/KernameMapFact/Instances.vo | 0m11.99s | 798080 ko || +0m00.37s || -1984 ko | +3.16% | -0.24% 0m07.92s | 789420 ko | ToTemplate/QuotationOf/Coq/FSets/FMapInterface/Sig.vo | 0m07.72s | 789176 ko || +0m00.20s || 244 ko | +2.59% | +0.03% 0m04.43s | 769272 ko | ToTemplate/QuotationOf/Common/Universes/Level/Instances.vo | 0m04.06s | 768948 ko || +0m00.37s || 324 ko | +9.11% | +0.04% 0m04.10s | 839732 ko | ToTemplate/QuotationOf/Template/Typing/TemplateConversion/Instances.vo | 0m05.02s | 841736 ko || -0m00.92s || -2004 ko | -18.32% | -0.23% 0m03.92s | 768532 ko | ToTemplate/QuotationOf/Common/Universes/LevelExpr/Instances.vo | 0m03.49s | 768608 ko || +0m00.42s || -76 ko | +12.32% | -0.00% 0m03.85s | 765572 ko | ToTemplate/QuotationOf/Coq/Structures/Orders/Sig.vo | 0m03.96s | 765728 ko || -0m00.10s || -156 ko | -2.77% | -0.02% 0m03.71s | 766472 ko | ToTemplate/QuotationOf/Common/Kernames/Kername/Instances.vo | 0m03.63s | 766524 ko || +0m00.08s || -52 ko | +2.20% | -0.00% 0m03.57s | 962172 ko | ToTemplate/QuotationOf/Template/Ast/EnvHelper/Instances.vo | 0m04.09s | 969872 ko || -0m00.52s || -7700 ko | -12.71% | -0.79% 0m03.29s | 825368 ko | ToTemplate/QuotationOf/Template/Typing/TemplateDeclarationTyping/Instances.vo | 0m04.17s | 826964 ko || -0m00.87s || -1596 ko | -21.10% | -0.19% 0m02.95s | 768952 ko | ToTemplate/QuotationOf/Common/Universes/UnivConstraint/Instances.vo | 0m02.86s | 768760 ko || +0m00.09s || 192 ko | +3.14% | +0.02% 0m02.79s | 777104 ko | ToTemplate/QuotationOf/Template/Ast/TemplateTerm/Instances.vo | 0m03.04s | 777496 ko || -0m00.25s || -392 ko | -8.22% | -0.05% 0m02.09s | 764712 ko | ToTemplate/Utils/MCOption.vo | 0m02.61s | 766056 ko || -0m00.52s || -1344 ko | -19.92% | -0.17% 0m02.04s | 776460 ko | ToTemplate/Init.vo | 0m01.44s | 777204 ko || +0m00.60s || -744 ko | +41.66% | -0.09% 0m02.02s | 768048 ko | ToTemplate/Coq/Lists.vo | 0m01.13s | 767196 ko || +0m00.89s || 852 ko | +78.76% | +0.11% 0m01.89s | 910040 ko | ToTemplate/Common/BasicAst.vo | 0m01.79s | 914792 ko || +0m00.09s || -4752 ko | +5.58% | -0.51% 0m01.87s | 764676 ko | ToTemplate/Utils/All_Forall.vo | 0m01.93s | 765000 ko || -0m00.05s || -324 ko | -3.10% | -0.04% 0m01.83s | 765676 ko | ToTemplate/Coq/Numbers.vo | 0m01.23s | 764216 ko || +0m00.60s || 1460 ko | +48.78% | +0.19% 0m01.83s | 782892 ko | ToTemplate/QuotationOf/Template/ReflectAst/EnvDecide/Instances.vo | 0m02.25s | 784596 ko || -0m00.41s || -1704 ko | -18.66% | -0.21% 0m01.73s | 773096 ko | CommonUtils.vo | 0m01.14s | 771608 ko || +0m00.59s || 1488 ko | +51.75% | +0.19% 0m01.65s | 1047132 ko | ToTemplate/All.vo | 0m02.18s | 1056668 ko || -0m00.53s || -9536 ko | -24.31% | -0.90% 0m01.64s | 823680 ko | ToTemplate/QuotationOf/Template/Typing/TemplateTyping/Instances.vo | 0m02.31s | 823752 ko || -0m00.67s || -72 ko | -29.00% | -0.00% 0m01.64s | 1029248 ko | ToTemplate/Template/AstUtils.vo | 0m02.19s | 1037580 ko || -0m00.55s || -8332 ko | -25.11% | -0.80% 0m01.62s | 762324 ko | ToTemplate/Utils/MCList.vo | 0m01.62s | 763808 ko || +0m00.00s || -1484 ko | +0.00% | -0.19% 0m01.58s | 1001584 ko | ToTemplate/QuotationOf/Template/Ast/Instances.vo | 0m02.01s | 1011472 ko || -0m00.42s || -9888 ko | -21.39% | -0.97% 0m01.58s | 763604 ko | ToTemplate/Utils/MCProd.vo | 0m01.95s | 763840 ko || -0m00.36s || -236 ko | -18.97% | -0.03% 0m01.53s | 763024 ko | ToTemplate/Coq/Bool.vo | 0m02.18s | 762548 ko || -0m00.65s || 476 ko | -29.81% | +0.06% 0m01.49s | 771112 ko | ToTemplate/Utils/utils.vo | 0m01.98s | 772552 ko || -0m00.49s || -1440 ko | -24.74% | -0.18% 0m01.47s | 840308 ko | ToTemplate/QuotationOf/Common/Kernames/Instances.vo | 0m01.86s | 819720 ko || -0m00.39s || 20588 ko | -20.96% | +2.51% 0m01.47s | 779640 ko | ToTemplate/QuotationOf/Template/ReflectAst/TemplateTermDecide/Instances.vo | 0m01.55s | 781164 ko || -0m00.08s || -1524 ko | -5.16% | -0.19% 0m01.39s | 773124 ko | ToTemplate/Coq/Floats.vo | 0m01.10s | 773644 ko || +0m00.28s || -520 ko | +26.36% | -0.06% 0m01.37s | 778256 ko | ToTemplate/QuotationOf/Template/Ast/TemplateTermUtils/Instances.vo | 0m01.61s | 777632 ko || -0m00.24s || 624 ko | -14.90% | +0.08% 0m01.37s | 762076 ko | ToTemplate/Utils/ReflectEq.vo | 0m01.56s | 762944 ko || -0m00.18s || -868 ko | -12.17% | -0.11% 0m01.35s | 823528 ko | ToTemplate/QuotationOf/Template/Typing/TemplateConversionPar/Instances.vo | 0m02.20s | 823100 ko || -0m00.85s || 428 ko | -38.63% | +0.05% 0m01.32s | 760900 ko | ToTemplate/Utils/MCUtils.vo | 0m01.45s | 761788 ko || -0m00.12s || -888 ko | -8.96% | -0.11% 0m01.24s | 763964 ko | ToTemplate/Coq/ssr.vo | 0m01.37s | 764504 ko || -0m00.13s || -540 ko | -9.48% | -0.07% 0m01.24s | 827780 ko | ToTemplate/QuotationOf/Common/Universes/Instances.vo | 0m01.51s | 813848 ko || -0m00.27s || 13932 ko | -17.88% | +1.71% 0m01.22s | 761916 ko | ToTemplate/Utils/bytestring.vo | 0m01.75s | 762988 ko || -0m00.53s || -1072 ko | -30.28% | -0.14% 0m01.15s | 818260 ko | ToTemplate/QuotationOf/Template/Typing/Instances.vo | 0m01.70s | 817216 ko || -0m00.55s || 1044 ko | -32.35% | +0.12% 0m01.14s | 764464 ko | ToTemplate/Utils/MCArith.vo | 0m01.26s | 764108 ko || -0m00.12s || 356 ko | -9.52% | +0.04% 0m01.14s | 762852 ko | ToTemplate/Utils/MCReflect.vo | 0m01.62s | 762192 ko || -0m00.48s || 660 ko | -29.62% | +0.08% 0m01.10s | 761984 ko | ToTemplate/Common/config.vo | 0m01.14s | 762060 ko || -0m00.03s || -76 ko | -3.50% | -0.00% 0m01.06s | 761548 ko | ToTemplate/Coq/Strings.vo | 0m01.41s | 759972 ko || -0m00.34s || 1576 ko | -24.82% | +0.20% 0m00.96s | 766440 ko | ToTemplate/QuotationOf/Template/ReflectAst/Instances.vo | 0m01.12s | 766208 ko || -0m00.16s || 232 ko | -14.28% | +0.03% 0m00.90s | 761844 ko | ToTemplate/Common/Primitive.vo | 0m01.26s | 761984 ko || -0m00.36s || -140 ko | -28.57% | -0.01% 0m00.08s | 63988 ko | ToTemplate/Utils/MCRelations.vo | 0m00.06s | 63740 ko || +0m00.02s || 248 ko | +33.33% | +0.38% 0m00.07s | 63148 ko | ToTemplate/Utils/ByteCompareSpec.vo | 0m00.04s | 63208 ko || +0m00.03s || -60 ko | +75.00% | -0.09% 0m00.07s | 64920 ko | ToTemplate/Utils/monad_utils.vo | 0m00.05s | 63376 ko || +0m00.02s || 1544 ko | +40.00% | +2.43% 0m00.06s | 64912 ko | ToTemplate/Utils/ByteCompare.vo | 0m00.03s | 63964 ko || +0m00.03s || 948 ko | +100.00% | +1.48% 0m00.06s | 62956 ko | ToTemplate/Utils/ByteCompare_opt.vo | 0m00.03s | 63680 ko || +0m00.03s || -724 ko | +100.00% | -1.13% 0m00.06s | 63788 ko | ToTemplate/Utils/MCEquality.vo | 0m00.07s | 64724 ko || -0m00.01s || -936 ko | -14.28% | -1.44% 0m00.06s | 63332 ko | ToTemplate/Utils/MCPred.vo | 0m00.04s | 63728 ko || +0m00.01s || -396 ko | +49.99% | -0.62% 0m00.06s | 63340 ko | ToTemplate/Utils/MCPrelude.vo | 0m00.10s | 63372 ko || -0m00.04s || -32 ko | -40.00% | -0.05% 0m00.06s | 64072 ko | ToTemplate/Utils/MCSquash.vo | 0m00.07s | 64196 ko || -0m00.01s || -124 ko | -14.28% | -0.19% 0m00.05s | 63020 ko | ToTemplate/Utils/MCCompare.vo | 0m00.04s | 64692 ko || +0m00.01s || -1672 ko | +25.00% | -2.58% 0m00.04s | 64704 ko | ToTemplate/Common/Transform.vo | 0m00.05s | 64188 ko || -0m00.01s || 516 ko | -20.00% | +0.80% 0m00.04s | 65740 ko | ToTemplate/Template/LiftSubst.vo | 0m00.04s | 63916 ko || +0m00.00s || 1824 ko | +0.00% | +2.85% 0m00.04s | 64632 ko | ToTemplate/Template/ReflectAst.vo | 0m00.06s | 63748 ko || -0m00.01s || 884 ko | -33.33% | +1.38% 0m00.04s | 63300 ko | ToTemplate/Utils/MCString.vo | 0m00.08s | 63272 ko || -0m00.04s || 28 ko | -50.00% | +0.04% 0m00.03s | 64556 ko | ToTemplate/Common/Reflect.vo | 0m00.06s | 63872 ko || -0m00.03s || 684 ko | -50.00% | +1.07% 0m00.03s | 63960 ko | ToTemplate/Template/UnivSubst.vo | 0m00.04s | 63204 ko || -0m00.01s || 756 ko | -25.00% | +1.19% 0m00.03s | 63800 ko | ToTemplate/Utils/LibHypsNaming.vo | 0m00.04s | 64264 ko || -0m00.01s || -464 ko | -25.00% | -0.72% 0m00.03s | 65040 ko | ToTemplate/Utils/wGraph.vo | 0m00.05s | 65976 ko || -0m00.02s || -936 ko | -40.00% | -1.41% 0m00.02s | 64756 ko | ToTemplate/Template/Induction.vo | 0m00.02s | 64116 ko || +0m00.00s || 640 ko | +0.00% | +0.99% ``` </p> </details>
1 parent 911dd7d commit 816cc64

File tree

18 files changed

+193
-301
lines changed

18 files changed

+193
-301
lines changed

quotation/_CoqProject.in

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,17 +26,26 @@ theories/ToTemplate/QuotationOf/Common/EnvironmentTyping/Sig.v
2626
theories/ToTemplate/QuotationOf/Common/Kernames/Instances.v
2727
theories/ToTemplate/QuotationOf/Common/Kernames/Kername/Instances.v
2828
theories/ToTemplate/QuotationOf/Common/Kernames/KernameMap/Instances.v
29+
theories/ToTemplate/QuotationOf/Common/Kernames/KernameMapDecide/Instances.v
30+
theories/ToTemplate/QuotationOf/Common/Kernames/KernameMapExtraFact/Instances.v
2931
theories/ToTemplate/QuotationOf/Common/Kernames/KernameMapFact/Instances.v
3032
theories/ToTemplate/QuotationOf/Common/Kernames/KernameSet/Instances.v
33+
theories/ToTemplate/QuotationOf/Common/Kernames/KernameSetExtraDecide/Instances.v
34+
theories/ToTemplate/QuotationOf/Common/Kernames/KernameSetExtraOrdProp/Instances.v
3135
theories/ToTemplate/QuotationOf/Common/Kernames/KernameSetOrdProp/Instances.v
3236
theories/ToTemplate/QuotationOf/Common/Universes/ConstraintSet/Instances.v
37+
theories/ToTemplate/QuotationOf/Common/Universes/ConstraintSetExtraDecide/Instances.v
38+
theories/ToTemplate/QuotationOf/Common/Universes/ConstraintSetExtraOrdProp/Instances.v
3339
theories/ToTemplate/QuotationOf/Common/Universes/ConstraintSetOrdProp/Instances.v
3440
theories/ToTemplate/QuotationOf/Common/Universes/Instances.v
3541
theories/ToTemplate/QuotationOf/Common/Universes/Level/Instances.v
3642
theories/ToTemplate/QuotationOf/Common/Universes/LevelExpr/Instances.v
3743
theories/ToTemplate/QuotationOf/Common/Universes/LevelExprSet/Instances.v
44+
theories/ToTemplate/QuotationOf/Common/Universes/LevelExprSetExtraOrdProp/Instances.v
3845
theories/ToTemplate/QuotationOf/Common/Universes/LevelExprSetOrdProp/Instances.v
3946
theories/ToTemplate/QuotationOf/Common/Universes/LevelSet/Instances.v
47+
theories/ToTemplate/QuotationOf/Common/Universes/LevelSetExtraDecide/Instances.v
48+
theories/ToTemplate/QuotationOf/Common/Universes/LevelSetExtraOrdProp/Instances.v
4049
theories/ToTemplate/QuotationOf/Common/Universes/LevelSetOrdProp/Instances.v
4150
theories/ToTemplate/QuotationOf/Common/Universes/UnivConstraint/Instances.v
4251
theories/ToTemplate/QuotationOf/Coq/FSets/FMapAVL/Sig.v
@@ -70,6 +79,8 @@ theories/ToTemplate/QuotationOf/Template/Typing/TemplateDeclarationTyping/Instan
7079
theories/ToTemplate/QuotationOf/Template/Typing/TemplateEnvTyping/Instances.v
7180
theories/ToTemplate/QuotationOf/Template/Typing/TemplateGlobalMaps/Instances.v
7281
theories/ToTemplate/QuotationOf/Template/Typing/TemplateTyping/Instances.v
82+
theories/ToTemplate/QuotationOf/Utils/MCFSets/Sig.v
83+
theories/ToTemplate/QuotationOf/Utils/MCMSets/Sig.v
7384
theories/ToTemplate/Template/Ast.v
7485
theories/ToTemplate/Template/AstUtils.v
7586
theories/ToTemplate/Template/Induction.v

quotation/theories/ToTemplate/Common/Kernames.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ From MetaCoq.Quotation.ToTemplate.QuotationOf.Common Require Import Kernames.Ins
1010
#[export] Instance quote_modpath : ground_quotable modpath := ltac:(induction 1; exact _).
1111
#[export] Instance quote_kername : ground_quotable kername := _.
1212

13-
Module QuoteKernameSet := MSets.QuoteMSetAVL Kername KernameSet KernameSetOrdProp qKername qKernameSet qKernameSetOrdProp.
13+
Module QuoteKernameSet := MSets.QuoteMSetAVL Kername KernameSet KernameSetOrdProp KernameSetExtraOrdProp KernameSetExtraDecide qKername qKernameSet qKernameSetOrdProp qKernameSetExtraOrdProp qKernameSetExtraDecide.
1414
Export (hints) QuoteKernameSet.
15-
Module QuoteKernameMap := FSets.QuoteFMapAVL Kername.OT KernameMap KernameMapFact.F qKername.qOT qKernameMap qKernameMapFact.qF.
15+
Module QuoteKernameMap := FSets.QuoteFMapAVL Kername.OT KernameMap KernameMapFact.F KernameMapExtraFact KernameMapDecide qKername.qOT qKernameMap qKernameMapFact.qF qKernameMapExtraFact qKernameMapDecide.
1616
Export (hints) QuoteKernameMap.
1717

1818
#[export] Instance quote_inductive : ground_quotable inductive := ltac:(destruct 1; exact _).

quotation/theories/ToTemplate/Common/Universes.v

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ Record valuation :=
1818
Class Evaluable (A : Type) := val : valuation -> A -> nat.
1919
*)
2020

21-
Module QuoteLevelSet := MSets.QuoteMSetAVL Level LevelSet LevelSetOrdProp qLevel qLevelSet qLevelSetOrdProp.
21+
Module QuoteLevelSet := MSets.QuoteMSetAVL Level LevelSet LevelSetOrdProp LevelSetExtraOrdProp LevelSetExtraDecide qLevel qLevelSet qLevelSetOrdProp qLevelSetExtraOrdProp qLevelSetExtraDecide.
2222
Export (hints) QuoteLevelSet.
23-
Module QuoteLevelExprSet := MSets.QuoteMSetListWithLeibniz LevelExpr LevelExprSet LevelExprSetOrdProp qLevelExpr qLevelExprSet qLevelExprSetOrdProp.
23+
Module QuoteLevelExprSet := MSets.QuoteMSetListWithLeibniz LevelExpr LevelExprSet LevelExprSetOrdProp LevelExprSetExtraOrdProp qLevelExpr qLevelExprSet qLevelExprSetOrdProp qLevelExprSetExtraOrdProp.
2424
Export (hints) QuoteLevelExprSet.
25-
Module QuoteConstraintSet := MSets.QuoteMSetAVL UnivConstraint ConstraintSet ConstraintSetOrdProp qUnivConstraint qConstraintSet qConstraintSetOrdProp.
25+
Module QuoteConstraintSet := MSets.QuoteMSetAVL UnivConstraint ConstraintSet ConstraintSetOrdProp ConstraintSetExtraOrdProp ConstraintSetExtraDecide qUnivConstraint qConstraintSet qConstraintSetOrdProp qConstraintSetExtraOrdProp qConstraintSetExtraDecide.
2626
Export (hints) QuoteConstraintSet.
2727

2828
Module QuoteUniverses1.

quotation/theories/ToTemplate/Coq/FSets.v

Lines changed: 12 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@ From MetaCoq.Quotation.ToTemplate Require Import Init.
44
From MetaCoq.Quotation.ToTemplate Require Import (hints) Coq.Numbers Coq.Init Coq.Lists.
55
From MetaCoq.Quotation.ToTemplate.QuotationOf.Coq.Structures Require Import OrdersAlt.Sig.
66
From MetaCoq.Quotation.ToTemplate.QuotationOf.Coq.FSets Require Import FMapInterface.Sig FMapFacts.Sig FMapAVL.Sig FMapList.Sig.
7+
From MetaCoq.Quotation.ToTemplate.QuotationOf.Utils Require Import MCFSets.Sig.
78

89
#[export] Hint Unfold Int.Z_as_Int.t : quotation.
910

10-
Module QuoteWSfun (E : DecidableTypeOrig) (Import W : WSfun E) (Import WFacts : WFacts_funSig E W) (qE : QuotationOfDecidableTypeOrig E) (qW : QuotationOfWSfun E W) (qWFacts : QuotationOfWFacts_fun E W WFacts).
11-
Import (hints) qE qW qWFacts.
11+
Module QuoteWSfun (E : DecidableTypeOrig) (Import W : WSfun E) (Import WFacts : WFacts_funSig E W) (Import WFactsExtra : WFactsExtra_funSig E W WFacts) (qE : QuotationOfDecidableTypeOrig E) (qW : QuotationOfWSfun E W) (qWFacts : QuotationOfWFacts_fun E W WFacts) (qWFactsExtra : QuotationOfWFactsExtra_fun E W WFacts WFactsExtra).
12+
Import (hints) qE qW qWFacts qWFactsExtra.
1213
#[export] Hint Unfold Int.Z_as_Int.t : quotation.
1314

1415
Section with_quote.
@@ -27,62 +28,14 @@ Module QuoteWSfun (E : DecidableTypeOrig) (Import W : WSfun E) (Import WFacts :
2728
#[export] Instance quote_neg_Empty {m} {qm : quotation_of m} : ground_quotable (~@Empty elt m)
2829
:= quote_neg_of_iff (iff_sym (@is_empty_iff _ _)).
2930

30-
Definition Equiv_alt (eq_elt : elt -> elt -> Prop) m m' :=
31-
let eq_opt_elt x y := match x, y with
32-
| Some x, Some y => eq_elt x y
33-
| None, None => True
34-
| Some _, None | None, Some _ => False
35-
end in
36-
List.Forall (fun '(k, _) => eq_opt_elt (find k m) (find k m')) (@elements elt m)
37-
/\ List.Forall (fun '(k, _) => eq_opt_elt (find k m) (find k m')) (@elements elt m').
3831
Import StrongerInstances.
39-
Lemma Equiv_alt_iff {eq_elt m m'} : Equiv_alt eq_elt m m' <-> Equiv eq_elt m m'.
40-
Proof using Type.
41-
cbv [Equiv Equiv_alt].
42-
cbv [In] in *.
43-
setoid_rewrite find_mapsto_iff.
44-
rewrite !Forall_forall.
45-
pose proof (@find_o elt m).
46-
pose proof (@find_o elt m').
47-
transitivity
48-
(let eq_opt_elt x y := match x, y with
49-
| Some x, Some y => eq_elt x y
50-
| None, None => True
51-
| Some _, None | None, Some _ => False
52-
end in
53-
(forall k, In k m -> eq_opt_elt (find k m) (find k m'))
54-
/\ (forall k, In k m' -> eq_opt_elt (find k m) (find k m'))).
55-
1: cbv [In]; setoid_rewrite elements_mapsto_iff; setoid_rewrite InA_alt; cbv [eq_key_elt]; cbn [fst snd].
56-
2: cbv [In]; setoid_rewrite find_mapsto_iff.
57-
all: repeat (split || intros || destruct_head'_and || split_iff || destruct_head'_prod || destruct_head'_ex || subst).
58-
all: specialize_dep_under_binders_by eapply ex_intro.
59-
all: specialize_dep_under_binders_by eapply conj.
60-
all: specialize_dep_under_binders_by eapply eq_refl.
61-
all: specialize_dep_under_binders_by eapply pair.
62-
all: cbn [fst snd] in *.
63-
all: specialize_all_ways_under_binders_by apply E.eq_refl.
64-
all: repeat first [ progress destruct_head'_ex
65-
| match goal with
66-
| [ H : List.In _ _ |- _ ]
67-
=> progress specialize_under_binders_by exact H
68-
| [ H : E.eq _ _ |- _ ]
69-
=> progress specialize_under_binders_by exact H
70-
| [ H : find _ _ = Some _ |- _ ]
71-
=> progress specialize_under_binders_by exact H
72-
end ].
73-
all: try solve [ repeat destruct ?; subst; try congruence; eauto ].
74-
Qed.
32+
#[export] Instance quote_Equiv_alt {eq_elt} {m m'} {qeq_elt : quotation_of eq_elt} {quote_elt : ground_quotable elt} {quote_key : ground_quotable key} {quote_eq_elt : forall x y, ground_quotable (eq_elt x y:Prop)} {qm : quotation_of m} {qm' : quotation_of m'} : ground_quotable (@Equiv_alt elt eq_elt m m') := ltac:(cbv [Equiv_alt]; exact _).
7533

76-
#[export] Instance quote_Equiv_alt {eq_elt} {m m'} {qeq_elt : quotation_of eq_elt} {quote_elt : ground_quotable elt} {quote_key : ground_quotable key} {quote_eq_elt : forall x y, ground_quotable (eq_elt x y:Prop)} {qm : quotation_of m} {qm' : quotation_of m'} : ground_quotable (@Equiv_alt eq_elt m m') := ltac:(cbv [Equiv_alt]; exact _).
77-
#[local] Instance qEquiv_alt : quotation_of (@Equiv_alt) := ltac:(unfold_quotation_of (); exact _).
78-
(* too slow :-( *)
79-
(*#[local] Instance qEquiv_alt_iff : quotation_of (@Equiv_alt_iff) := ltac:(unfold_quotation_of (); exact _).*)
34+
#[export] Instance quote_Equiv {eq_elt m m'} {qm : quotation_of m} {qm' : quotation_of m'} {quote_elt : ground_quotable elt} {quote_key : ground_quotable key} {qeq_elt : quotation_of eq_elt} {quote_eq_elt : forall x y, ground_quotable (eq_elt x y:Prop)} : ground_quotable (@Equiv elt eq_elt m m') := ground_quotable_of_iff Equiv_alt_iff.
8035

81-
#[export] Instance quote_Equiv {qEquiv_alt_iff : quotation_of (@Equiv_alt_iff)} {qEquiv_alt_iff : quotation_of (@Equiv_alt_iff)} {eq_elt m m'} {qm : quotation_of m} {qm' : quotation_of m'} {quote_elt : ground_quotable elt} {quote_key : ground_quotable key} {qeq_elt : quotation_of eq_elt} {quote_eq_elt : forall x y, ground_quotable (eq_elt x y:Prop)} : ground_quotable (@Equiv elt eq_elt m m') := ground_quotable_of_iff Equiv_alt_iff.
36+
#[export] Instance quote_Equal {m m'} {qm : quotation_of m} {qm' : quotation_of m'} {quote_elt : ground_quotable elt} {quote_key : ground_quotable key} : ground_quotable (@Equal elt m m') := ground_quotable_of_iff (iff_sym (@Equal_Equiv elt m m')).
8237

83-
#[export] Instance quote_Equal {qEquiv_alt_iff : quotation_of (@Equiv_alt_iff)} {m m'} {qm : quotation_of m} {qm' : quotation_of m'} {quote_elt : ground_quotable elt} {quote_key : ground_quotable key} : ground_quotable (@Equal elt m m') := ground_quotable_of_iff (iff_sym (@Equal_Equiv elt m m')).
84-
85-
#[export] Instance quote_Equivb {qEquiv_alt_iff : quotation_of (@Equiv_alt_iff)} {cmp m m'} {qm : quotation_of m} {qm' : quotation_of m'} {quote_elt : ground_quotable elt} {quote_key : ground_quotable key} {qcmp : quotation_of cmp} : ground_quotable (@Equivb elt cmp m m') := ltac:(cbv [Equivb Cmp]; exact _).
38+
#[export] Instance quote_Equivb {cmp m m'} {qm : quotation_of m} {qm' : quotation_of m'} {quote_elt : ground_quotable elt} {quote_key : ground_quotable key} {qcmp : quotation_of cmp} : ground_quotable (@Equivb elt cmp m m') := ltac:(cbv [Equivb Cmp]; exact _).
8639
End with_quote.
8740

8841
#[export] Existing Instances
@@ -106,94 +59,24 @@ Module QuoteWSfun (E : DecidableTypeOrig) (Import W : WSfun E) (Import WFacts :
10659
.
10760
End QuoteWSfun.
10861

109-
Module QuoteFMapAVL (T : OrderedTypeOrig) (M : FMapAVL.MakeSig T) (Import WFacts : WFacts_funSig T M) (qT : QuotationOfOrderedTypeOrig T) (qM : FMapAVL.QuotationOfMake T M) (qWFacts : QuotationOfWFacts_fun T M WFacts).
110-
Import (hints) qT qM qWFacts.
111-
Include QuoteWSfun T M WFacts qT qM qWFacts.
62+
Module QuoteFMapAVL (T : OrderedTypeOrig) (M : FMapAVL.MakeSig T) (Import WFacts : WFacts_funSig T M) (Import WFactsExtra : WFactsExtra_funSig T M WFacts) (Import MDecide : FMapAVL.DecideSig T M) (qT : QuotationOfOrderedTypeOrig T) (qM : FMapAVL.QuotationOfMake T M) (qWFacts : QuotationOfWFacts_fun T M WFacts) (qWFactsExtra : QuotationOfWFactsExtra_fun T M WFacts WFactsExtra) (qMDecide : FMapAVL.QuotationOfDecide T M MDecide).
63+
Import (hints) qT qM qWFacts qWFactsExtra qMDecide.
64+
Include QuoteWSfun T M WFacts WFactsExtra qT qM qWFacts qWFactsExtra.
11265

11366
Module Raw.
114-
Scheme Induction for M.Raw.tree Sort Type.
115-
Scheme Induction for M.Raw.tree Sort Set.
116-
Scheme Induction for M.Raw.tree Sort Prop.
117-
Scheme Case for M.Raw.tree Sort Type.
118-
Scheme Case for M.Raw.tree Sort Prop.
119-
Scheme Minimality for M.Raw.tree Sort Type.
120-
Scheme Minimality for M.Raw.tree Sort Set.
121-
Scheme Minimality for M.Raw.tree Sort Prop.
122-
12367
Section with_t.
12468
Context {elt : Type}
12569
{qelt : quotation_of elt}
12670
{quote_elt : ground_quotable elt} {quote_T_t : ground_quotable T.t}.
12771

128-
Fixpoint lt_tree_dec x t : { @M.Raw.lt_tree elt x t } + {~ @M.Raw.lt_tree elt x t}.
129-
Proof.
130-
refine match t with
131-
| M.Raw.Leaf => left _
132-
| M.Raw.Node l k n r z
133-
=> match T.compare k x, lt_tree_dec x l, lt_tree_dec x r with
134-
| LT p1, left p2, left p3 => left _
135-
| _, right pf, _ => right _
136-
| _, _, right pf => right _
137-
| _, _, _ => right _
138-
end
139-
end;
140-
try solve [ inversion 1
141-
| inversion 1; subst; auto;
142-
match goal with
143-
| [ H : T.lt _ _, H' : T.eq _ _ |- _ ]
144-
=> now first [ rewrite -> H' in H | rewrite <- H' in H ]
145-
end
146-
| intro f; apply pf; hnf in *; intros; apply f; constructor; (assumption + reflexivity)
147-
| intro f; eapply M.Raw.Proofs.MX.lt_antirefl; (idtac + etransitivity); (eassumption + (eapply f; constructor; (idtac + symmetry); (eassumption + reflexivity))) ].
148-
Defined.
149-
Fixpoint gt_tree_dec x t : { @M.Raw.gt_tree elt x t } + {~ @M.Raw.gt_tree elt x t}.
150-
Proof.
151-
refine match t with
152-
| M.Raw.Leaf => left _
153-
| M.Raw.Node l k n r z
154-
=> match T.compare k x, gt_tree_dec x l, gt_tree_dec x r with
155-
| GT p1, left p2, left p3 => left _
156-
| _, right pf, _ => right _
157-
| _, _, right pf => right _
158-
| _, _, _ => right _
159-
end
160-
end;
161-
try solve [ inversion 1
162-
| inversion 1; subst; auto;
163-
match goal with
164-
| [ H : T.lt _ _, H' : T.eq _ _ |- _ ]
165-
=> now first [ rewrite -> H' in H | rewrite <- H' in H ]
166-
end
167-
| intro f; apply pf; hnf in *; intros; apply f; constructor; (assumption + reflexivity)
168-
| intro f; eapply M.Raw.Proofs.MX.lt_antirefl; (idtac + etransitivity); (eassumption + (eapply f; constructor; (idtac + symmetry); (eassumption + reflexivity))) ].
169-
Defined.
170-
Fixpoint bst_dec t : { @M.Raw.bst elt t } + {~ @M.Raw.bst elt t}.
171-
Proof.
172-
refine match t with
173-
| M.Raw.Leaf => left _
174-
| M.Raw.Node l k n r z
175-
=> match bst_dec l, bst_dec r, lt_tree_dec k l, gt_tree_dec k r with
176-
| right pf, _, _, _ => right _
177-
| _, right pf, _, _ => right _
178-
| _, _, right pf, _ => right _
179-
| _, _, _, right pf => right _
180-
| left p1, left p2, left p3, left p4 => left _
181-
end
182-
end;
183-
try solve [ constructor; assumption
184-
| inversion 1; subst; auto ].
185-
Defined.
18672
#[local] Hint Unfold M.Raw.key : quotation.
18773
#[export] Instance quote_tree : ground_quotable (M.Raw.tree elt) := (ltac:(induction 1; exact _)).
188-
(* very slow :-( *)
189-
#[local] Instance qlt_tree_dec : quotation_of (@lt_tree_dec) := ltac:(unfold_quotation_of (); exact _).
190-
#[local] Instance qgt_tree_dec : quotation_of (@gt_tree_dec) := ltac:(unfold_quotation_of (); exact _).
191-
#[local] Instance qbst_dec : quotation_of (@bst_dec) := ltac:(unfold_quotation_of (); exact _).
19274
#[export] Instance quote_bst t : ground_quotable (M.Raw.bst t)
193-
:= ground_quotable_of_dec (@bst_dec t).
75+
:= ground_quotable_of_dec (@Raw.bst_dec elt t).
19476
End with_t.
19577
#[export] Hint Unfold M.Raw.key : quotation.
19678
#[export] Existing Instances
79+
quote_tree
19780
quote_bst
19881
.
19982
End Raw.

0 commit comments

Comments
 (0)