diff --git a/Language.agda b/Language.agda index 56e3170..2042c76 100644 --- a/Language.agda +++ b/Language.agda @@ -10,6 +10,7 @@ open import Data.Fin using (Fin; suc; zero) open import Data.Fin.Properties as FinProp using (suc-injective) open import Data.List as List using (List; []; _∷_) open import Data.List.Membership.Propositional as ListMem using () +open import Data.List.Membership.Propositional.Properties as ListMemProp using (∈-filter⁺) open import Data.List.Relation.Unary.All using (All; []; _∷_) open import Data.List.Relation.Unary.Any as RelAny using () open import Data.Nat using (ℕ; suc) @@ -100,3 +101,9 @@ record Program : Set where incoming : State → List State incoming idx = List.filter (λ idx' → (idx' , idx) ∈? (Graph.edges graph)) states + + edge⇒incoming : ∀ {s₁ s₂ : State} → (s₁ , s₂) ListMem.∈ (Graph.edges graph) → + s₁ ListMem.∈ (incoming s₂) + edge⇒incoming {s₁} {s₂} s₁,s₂∈es = + ∈-filter⁺ (λ s' → (s' , s₂) ∈? (Graph.edges graph)) + (states-complete s₁) s₁,s₂∈es