Successfully prove that monotonic updates preserve existing indices

Signed-off-by: Danila Fedorin <danila.fedorin@gmail.com>
This commit is contained in:
Danila Fedorin 2024-04-08 00:24:52 -07:00
parent bc5b4b7d9e
commit 4f14a7b765

View File

@ -179,6 +179,14 @@ module Graphs where
) )
} }
open Relaxable {{...}} public
relax-preserves-[]≡ : (g₁ g₂ : Graph) (g₁⊆g₂ : g₁ g₂) (idx : Graph.Index g₁)
g₁ [ idx ] g₂ [ relax g₁⊆g₂ idx ]
relax-preserves-[]≡ g₁ g₂ (Mk-⊆ n refl g₁[]≡g₂[] _) idx =
trans (g₁[]≡g₂[] idx) (cong (λ vec lookup vec (idx ↑ˡ n))
(cast-is-id refl (Graph.nodes g₂)))
MonotonicGraphFunction : (Graph Set) Set MonotonicGraphFunction : (Graph Set) Set
MonotonicGraphFunction T = (g₁ : Graph) Σ Graph (λ g₂ T g₂ × g₁ g₂) MonotonicGraphFunction T = (g₁ : Graph) Σ Graph (λ g₂ T g₂ × g₁ g₂)
@ -259,8 +267,6 @@ module Graphs where
addEdges g ((idx , idx') (idx₂ , idx) []) }) addEdges g ((idx , idx') (idx₂ , idx) []) })
map (λ { g ((idx₁ , idx₂) , idx , idx') (idx , idx') }) map (λ { g ((idx₁ , idx₂) , idx , idx') (idx , idx') })
-- open Relaxable {{...}} public
open import Lattice.MapSet _≟ˢ_ open import Lattice.MapSet _≟ˢ_
renaming renaming
( MapSet to StringSet ( MapSet to StringSet