ca375976b7
Re-export members of isLattice together with the record where needed
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 22:43:13 -08:00
c0238fea25
Clean up how proofs of fixed height are imported
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 22:34:49 -08:00
1432dfa669
Clean up FiniteMap module structure a bit
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 22:28:47 -08:00
ffe9d193d9
Parameterize FiniteMap by its keys right away
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 22:19:02 -08:00
70847d51db
Swich AboveBelow to using instances
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 21:23:07 -08:00
d96eb97b69
Switch maps (and consequently most of the code) to using instances
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 21:16:22 -08:00
b0488c9cc6
Make 'IsDecidable' into a record to aid instance search
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 18:58:56 -08:00
4da9b6d3cd
Fuse 'FiniteMap' and 'FiniteValueMap'
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-12-31 19:21:23 -08:00
c2c04e3ecd
Rewrite Forward analysis to use statement-based evaluators.
...
To keep old (expression-based) analyses working, switch to using
instance search and provide "adapters" that auto-construct statement
analyzers from expression analyzers.
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-12-31 17:31:01 -08:00
f01df5af4b
Slightly tweak module style in Forward.agda
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-12-31 12:55:29 -08:00
b28994e1d2
Tighten exported definitions in Forward.agda
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-12-31 00:29:39 -08:00
10332351ea
Use instance search to avoid multiply-nested modules
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-12-31 00:21:10 -08:00
7d2928ed81
Prove that the sign analysis is correct
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-10 22:31:47 -07:00
5f946de5e8
Remove last remaining assumption for correctness
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-10 21:30:56 -07:00
3d2a507f2f
Almost prove correctness
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 22:49:53 -07:00
16fa4cd1d8
Use records rather than nested pairs to represent 'fixed height'
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 20:11:04 -07:00
f4392b32c0
Finish the last proof obligation for trace walking
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 19:01:36 -07:00
794c04eee9
Prove the foldr-implies lemma
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 18:37:50 -07:00
80069e76e6
Prove the recursive step of trace walking
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 17:56:47 -07:00
20dc99ba1f
Re-indent some code to take up less horizontal space
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 16:57:03 -07:00
f0b0d51b48
Add unproven lemma about fold implication
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 23:38:23 -07:00
8ff88f9f9e
Move helper code into separate function
...
I'll need to reuse it.
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 23:35:02 -07:00
838aaf9c58
Start end-to-end proof of correctness
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 23:30:03 -07:00
4ac9dffa9b
Prove that the var->lattice maps respect equality
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 22:53:21 -07:00
3f5551d70c
Add a lemma about the effect of joinAll
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 22:34:02 -07:00
5837fdf19b
Prove that 'updateAll' has preservation
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 22:29:36 -07:00
4350919871
Add proof about setVariablesForState
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 22:09:56 -07:00
7fe46b014c
Slightly simplify evaluation code
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 22:05:50 -07:00
66d229c493
Prove that multi-statement evaluation "preserves" the validity of the analysis
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 21:51:53 -07:00
1b8bea8957
Use foldl in multi-statement evaluation
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 21:50:38 -07:00
ad4592d4d2
Switch to using implicit arguments where needed
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 21:34:17 -07:00
8d0d87d2d9
Start on proofs of correctness
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 20:50:21 -07:00
3859826293
Define interpretation of the sign lattice
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-04-30 21:58:41 -07:00
de956cdc6a
Split the Language file into modules
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-04-13 18:39:38 -07:00
44f04e4020
Get forward analysis working again
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-04-13 14:08:40 -07:00
5d56a7ce2d
Fix comments in Forward.agda
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-23 12:09:14 -07:00
2e096bd64e
Extract common parts of forward analyses into Forward.agda
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-22 17:50:29 -07:00
1a7b2a1736
Adjust behavior of eval to not require constant 'k in vars' threading
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-22 17:15:40 -07:00
f0da9a9020
Move more code out of Sign and into Main
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-11 13:07:42 -07:00
040c13caba
Use instances to simplify printing code
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-11 12:50:05 -07:00
3e88a64ed9
Add some debugging code to sign analysis to print the results
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 22:23:45 -07:00
8a85c4497c
Prove that evaluation is monotonic and complete sign analysis
...
Other than monotonicity of plus and minus, god damn it.
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 21:25:46 -07:00
8964ba59a1
Prove monotonicity of eval
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 20:29:05 -07:00
96f3ceaeb2
Use the previous join function directly in GeneralizedUpdate
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 19:41:02 -07:00
237250cf72
Stop using modules in 'Sign' analysis
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 19:23:48 -07:00
8515491327
Simplify AboveBelow a bit to avoid nested modules
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 18:43:10 -07:00
f21ebdcf46
Start working on the evaluation operation.
...
Proving monotonicity is the main hurdle here.
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 18:13:01 -07:00
51accb6438
Define 'minus', too -- with no monotonicity proof.
...
I'm still thinking about how this should be achieved most easily.
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 16:40:49 -07:00
afe5bac2dc
Commit result of (unsuccessfully) trying to prove monotonicity of plus.
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 13:54:19 -07:00
f84a1c923c
Prove that the 'join' transformation is monotonic
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-09 23:06:47 -08:00