d3bac2fe60
Switch to representing least/greatest with absorption
...
It's more convenient this way to require non-partiality.
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-22 17:59:54 +02:00
5705f256fd
Prove some quasi-homomorphism properties
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-11 15:49:56 +02:00
d59ae90cef
Lock down more equivalence relation proofs
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-11 15:46:18 +02:00
c1c34c69a5
Strengthen absorption laws
...
If x \/ y is defined, x /\ (x \/ y) has to be defined,
too. Previously, we stated them in terms of
"if x /\ (x \/ y) is defined", which is not right.
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-11 15:44:29 +02:00
d2faada90a
Add a left and right version of identity
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-11 15:43:27 +02:00
7fdbf0397d
Prove idempotence of value combining
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-05 16:57:24 -07:00
fdef8c0a60
Prove commutativity and associativity of value joining
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-05 16:49:38 -07:00
c48bd0272e
Define "less than or equal" for partial lattices and prove some properties
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-05 14:53:00 -07:00
d251915772
Show that lifted equality preserves equivalences
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-05 14:52:40 -07:00
da6e82d04b
Add helper definitions for partial commutativity, associativity, reflexivity
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-07-02 15:11:12 -05:00
dd101c6e9b
Start working on a general lattice builder framework
2025-06-29 10:35:37 -07:00
a611dd0f31
Add 'ExtendBelow' lattice, which adds new bottom to lattices
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-04-20 19:13:07 -07:00
33cc0f9fe9
Implement constant analysis
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-05 19:39:12 -08:00
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
cf824dc744
Switch product to using instances
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 21:33:59 -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
d90b544436
Use binary operator for decidable equality consistently
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 19:08:28 -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
8abf6f8670
Make 'isLattice' for simple types be an instance
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2025-01-04 17:27:38 -08:00
4da9b6d3cd
Fuse 'FiniteMap' and 'FiniteValueMap'
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-12-31 19:21:23 -08:00
69d1ecebae
Prove that the bottom map's valyes are all bottoms
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 20:48:32 -07:00
b78cb91f2a
Strengthen lemma about IterProd bottom to definition equality
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 20:20:11 -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
95669b2c65
Prove that the iterated product is made from iterated bottom elements
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 19:45:15 -07:00
6857f60465
Rename the min/max elements top bottom and top in Prod
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 19:08:46 -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
a22c0c9252
Prove a property of multi-key lookup
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-09 17:56:26 -07:00
cfa3375de5
Expose more functions from FiniteMap
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 20:50:05 -07:00
6b116ed960
Forward some map function to Finite{,Value}Map
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-05-08 20:34:15 -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
040c13caba
Use instances to simplify printing code
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-11 12:50:05 -07:00
56da61b339
Delete the bundles since they did not turn out all that useful
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-11 12:14:53 -07:00
8964ba59a1
Prove monotonicity of eval
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 20:29:05 -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
3305de4710
Remove need for explicit arguments in map derivatives
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 18:35:29 -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
0705df708e
Prove that variables in a program all come from the program's code
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-10 16:41:21 -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
1b1b80465c
Use named modules to avoid having to pass redundant parameters
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-09 21:46:15 -08:00
ca99e18184
Tweak exports from finite value bundle to avoid (some) redundant arguments
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-09 13:59:22 -08:00
702cf2c298
Expose more functionaity from the set lattice
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-09 13:58:40 -08:00
0c088ca2ae
Prove multi-key access monotonicity in finite maps
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-09 13:58:07 -08:00
bc138d87f0
Prove things about key-based access in map
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-09 13:57:29 -08:00
311ed75186
Expose more helpers from 'Map'
...
Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
2024-03-09 13:57:02 -08:00