Revision e9b3505d96cb77b05208b10a0b14b6b2cf99887e authored by Jason Gross on 13 August 2020, 00:56:43 UTC, committed by Jason Gross on 16 August 2020, 23:17:03 UTC
There were two insights that went into making it possible to remove
functional extensionaliy.

1. The insight that went into 4d7999ebb66c1497222d024a1d9f9d0f1ecb2356:
   interp-relatedness implies equivalence.

2. Requiring `f x = v` in the `App`/`LetIn` case of `interp_related_gen`
   et al is essentially saying that, in order to prove
   `interp_related_gen`, we need to materialize an interpretation of the
   function part of applications.  Since interpretation is in general
   highly non-trivial (for `rawexpr`s, `value`s, etc), we must weaken
   this condition.  By instead only requiring `f x == v`, we only
   require being able to manifest *some* function which interprets to
   `v`, a much easier task.  This weakening allows us to prove for each
   interpretation-relation `R` that `(exists e, R e v1 /\ R e v2) <-> v1
   == v2`, i.e., that two interpreted values are equivalent iff there is
   some uninterpreted value which is related to both of them.

   Unfortunately this is not a full specification of
   interpretation-relatedness (we still need to say what it means for a
   particular uninterpreted value to be related to a particular
   interpreted value), and so we still end up doing a lot of work to
   prove various properties.

<details><summary>Timing Diff</summary>
<p>

```
   After |  Peak Mem | File Name                                          |   Before |  Peak Mem ||    Change || Change (mem) | % Change | % Change (mem)
---------------------------------------------------------------------------------------------------------------------------------------------------------
9m31.25s | 972156 ko | Total Time / Peak Mem                              | 8m49.94s | 955744 ko || +0m41.31s ||     16412 ko |   +7.79% |         +1.71%
---------------------------------------------------------------------------------------------------------------------------------------------------------
1m14.56s | 859792 ko | Rewriter/Language/UnderLetsProofs                  | 0m46.66s | 767576 ko || +0m27.90s ||     92216 ko |  +59.79% |        +12.01%
0m56.26s | 874108 ko | Rewriter/Rewriter/ProofsCommon                     | 0m48.79s | 869360 ko || +0m07.46s ||      4748 ko |  +15.31% |         +0.54%
0m24.67s | 644504 ko | Rewriter/Language/Wf                               | 0m22.59s | 633232 ko || +0m02.08s ||     11272 ko |   +9.20% |         +1.78%
1m04.38s | 953436 ko | Rewriter/Rewriter/InterpProofs                     | 1m03.09s | 955508 ko || +0m01.28s ||     -2072 ko |   +2.04% |         -0.21%
1m57.29s | 955812 ko | Rewriter/Rewriter/Wf                               | 1m57.19s | 955744 ko || +0m00.09s ||        68 ko |   +0.08% |         +0.00%
0m38.73s | 972156 ko | Rewriter/Rewriter/Examples/SieveOfEratosthenes     | 0m38.15s | 888496 ko || +0m00.57s ||     83660 ko |   +1.52% |         +9.41%
0m34.85s | 811392 ko | Rewriter/Rewriter/Examples                         | 0m34.56s | 811664 ko || +0m00.28s ||      -272 ko |   +0.83% |         -0.03%
0m32.36s | 806524 ko | Rewriter/Rewriter/Examples/PrefixSums              | 0m31.81s | 806696 ko || +0m00.55s ||      -172 ko |   +1.72% |         -0.02%
0m19.35s | 699656 ko | Rewriter/Rewriter/Examples/LiftLetsMap             | 0m19.03s | 696620 ko || +0m00.32s ||      3036 ko |   +1.68% |         +0.43%
0m18.74s | 612996 ko | Rewriter/Language/Inversion                        | 0m18.73s | 612420 ko || +0m00.00s ||       576 ko |   +0.05% |         +0.09%
0m15.07s | 686200 ko | Rewriter/Rewriter/Examples/Plus0Tree               | 0m14.93s | 685612 ko || +0m00.14s ||       588 ko |   +0.93% |         +0.08%
0m14.94s | 685332 ko | Rewriter/Rewriter/Examples/UnderLetsPlus0          | 0m14.75s | 685192 ko || +0m00.18s ||       140 ko |   +1.28% |         +0.02%
0m14.41s | 731276 ko | Rewriter/Demo                                      | 0m14.43s | 743012 ko || -0m00.01s ||    -11736 ko |   -0.13% |         -1.57%
0m13.15s | 637292 ko | Rewriter/Language/IdentifiersLibraryProofs         | 0m13.17s | 640980 ko || -0m00.01s ||     -3688 ko |   -0.15% |         -0.57%
0m06.79s | 503412 ko | Rewriter/Util/ListUtil                             | 0m06.56s | 501208 ko || +0m00.23s ||      2204 ko |   +3.50% |         +0.43%
0m04.58s | 527384 ko | Rewriter/Language/IdentifiersBasicLibrary          | 0m04.57s | 527564 ko || +0m00.00s ||      -180 ko |   +0.21% |         -0.03%
0m01.77s | 577488 ko | Rewriter/Rewriter/Examples/PerfTesting/Harness     | 0m01.87s | 577872 ko || -0m00.10s ||      -384 ko |   -5.34% |         -0.06%
0m01.72s | 457916 ko | Rewriter/Util/NatUtil                              | 0m01.70s | 457296 ko || +0m00.02s ||       620 ko |   +1.17% |         +0.13%
0m01.55s | 521092 ko | Rewriter/Language/IdentifiersLibrary               | 0m01.58s | 519796 ko || -0m00.03s ||      1296 ko |   -1.89% |         +0.24%
0m01.34s | 518212 ko | Rewriter/Rewriter/Rewriter                         | 0m01.37s | 515708 ko || -0m00.03s ||      2504 ko |   -2.18% |         +0.48%
0m01.22s | 518556 ko | Rewriter/Rewriter/Reify                            | 0m01.22s | 517588 ko || +0m00.00s ||       968 ko |   +0.00% |         +0.18%
0m01.18s | 477976 ko | Rewriter/Language/Language                         | 0m01.15s | 477124 ko || +0m00.03s ||       852 ko |   +2.60% |         +0.17%
0m01.14s | 539084 ko | Rewriter/Rewriter/AllTactics                       | 0m01.11s | 537084 ko || +0m00.02s ||      2000 ko |   +2.70% |         +0.37%
0m01.13s | 444328 ko | Rewriter/Util/ListUtil/Forall                      | 0m01.04s | 445248 ko || +0m00.08s ||      -920 ko |   +8.65% |         -0.20%
0m00.95s | 523516 ko | Rewriter/Rewriter/ProofsCommonTactics              | 0m00.95s | 520348 ko || +0m00.00s ||      3168 ko |   +0.00% |         +0.60%
0m00.90s | 506864 ko | Rewriter/Language/IdentifiersGenerate              | 0m00.81s | 505404 ko || +0m00.08s ||      1460 ko |  +11.11% |         +0.28%
0m00.90s | 558172 ko | Rewriter/Rewriter/Examples/PerfTesting/All         | 0m00.87s | 560168 ko || +0m00.03s ||     -1996 ko |   +3.44% |         -0.35%
0m00.89s | 532984 ko | Rewriter/Rewriter/Examples/PerfTesting/Settings    | 0m00.87s | 534512 ko || +0m00.02s ||     -1528 ko |   +2.29% |         -0.28%
0m00.83s | 507180 ko | Rewriter/Language/IdentifiersGenerateProofs        | 0m00.84s | 506900 ko || -0m00.01s ||       280 ko |   -1.19% |         +0.05%
0m00.82s | 530880 ko | Rewriter/Util/plugins/RewriterBuild                | 0m00.79s | 529620 ko || +0m00.02s ||      1260 ko |   +3.79% |         +0.23%
0m00.81s | 530028 ko | Rewriter/Util/plugins/RewriterBuildRegistry        | 0m00.78s | 528980 ko || +0m00.03s ||      1048 ko |   +3.84% |         +0.19%
0m00.78s | 533476 ko | Rewriter/Util/plugins/RewriterBuildRegistryImports | 0m00.80s | 531528 ko || -0m00.02s ||      1948 ko |   -2.50% |         +0.36%
0m00.70s | 458240 ko | Rewriter/Util/Bool/Reflect                         | 0m00.71s | 457920 ko || -0m00.01s ||       320 ko |   -1.40% |         +0.06%
0m00.56s | 473820 ko | Rewriter/Language/IdentifiersBasicGenerate         | 0m00.59s | 473848 ko || -0m00.02s ||       -28 ko |   -5.08% |         -0.00%
0m00.48s | 449072 ko | Rewriter/Util/MSetPositive/Facts                   | 0m00.47s | 449132 ko || +0m00.01s ||       -60 ko |   +2.12% |         -0.01%
0m00.46s | 463164 ko | Rewriter/Language/UnderLets                        | 0m00.46s | 462804 ko || +0m00.00s ||       360 ko |   +0.00% |         +0.07%
0m00.31s | 400688 ko | Rewriter/Language/PreLemmas                        | 0m00.32s | 398084 ko || -0m00.01s ||      2604 ko |   -3.12% |         +0.65%
0m00.27s | 312208 ko | Rewriter/Util/Option                               | 0m00.26s | 311880 ko || +0m00.01s ||       328 ko |   +3.84% |         +0.10%
0m00.18s | 339048 ko | Rewriter/Util/OptionList                           | 0m00.17s | 338844 ko || +0m00.00s ||       204 ko |   +5.88% |         +0.06%
0m00.09s | 202332 ko | Rewriter/Util/ListUtil/SetoidList                  | 0m00.12s | 202224 ko || -0m00.03s ||       108 ko |  -25.00% |         +0.05%
0m00.08s | 133832 ko | Rewriter/Util/Bool                                 | 0m00.08s | 116804 ko || +0m00.00s ||     17028 ko |   +0.00% |        +14.57%
0m00.04s |  57244 ko | Rewriter/Util/Tactics/Contains                     |   N/A    |    N/A    || +0m00.04s ||     57244 ko |        ∞ |              ∞
0m00.03s |  58744 ko | Rewriter/Util/Tactics/SetoidSubst                  |   N/A    |    N/A    || +0m00.03s ||     58744 ko |        ∞ |              ∞

```
</p>
1 parent 8c11afc
History
File Mode Size
etc
src
.gitattributes -rw-r--r-- 32 bytes
.gitignore -rw-r--r-- 2.3 KB
.gitmodules -rw-r--r-- 107 bytes
.mailmap -rw-r--r-- 2.3 KB
.travis.yml -rw-r--r-- 2.3 KB
AUTHORS -rw-r--r-- 503 bytes
CONTRIBUTORS -rw-r--r-- 1.0 KB
LICENSE -rw-r--r-- 1.1 KB
Makefile -rw-r--r-- 4.7 KB
Makefile.local-late -rw-r--r-- 610 bytes
Makefile.local.common -rw-r--r-- 2.2 KB
Makefile.perf -rw-r--r-- 1.7 KB
README.md -rw-r--r-- 12.0 KB
_CoqProject.in -rw-r--r-- 4.8 KB
rewriting-extended.md -rw-r--r-- 125.0 KB

README.md

back to top