changeset 327:4aa0ebd75673

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 21 Jan 2022 12:31:34 +0900
parents a3fb231feeb9
children cd73fe566291
files automaton-in-agda/src/omega-automaton.agda automaton-in-agda/src/temporal-logic.agda
diffstat 2 files changed, 102 insertions(+), 44 deletions(-) [+]
line wrap: on
line diff
--- a/automaton-in-agda/src/omega-automaton.agda	Fri Jan 21 10:45:42 2022 +0900
+++ b/automaton-in-agda/src/omega-automaton.agda	Fri Jan 21 12:31:34 2022 +0900
@@ -184,47 +184,3 @@
 lemma4 = {!!}
 
 
-data LTTL ( V : Set )  : Set where
-    s :  V → LTTL V
-    ○ :  LTTL V → LTTL V
-    □ :  LTTL V → LTTL V
-    ⋄ :  LTTL V → LTTL V
-    _U_  :  LTTL V → LTTL  V → LTTL  V
-    t-not :  LTTL V → LTTL  V
-    _t\/_ :  LTTL V → LTTL  V → LTTL  V
-    _t/\_ :  LTTL V → LTTL  V → LTTL  V
-
-{-# TERMINATING #-}
-M1 : { V : Set } → (ℕ → V → Bool) → ℕ →  LTTL V  → Set
-M1 σ i (s x) = σ i x ≡ true
-M1 σ i (○ x) = M1 σ (suc i) x  
-M1 σ i (□ p) = (j : ℕ) → i ≤ j → M1  σ j p
-M1 σ i (⋄ p) = ¬ ( M1 σ i (t-not p) )
-M1 σ i (p U q) = ¬ ( ( j : ℕ) → i ≤ j → ¬ (M1 σ j q ∧ (( k : ℕ) → i ≤ k → k < j → M1 σ j p )) )
-M1 σ i (t-not p) = ¬ ( M1 σ i p )
-M1 σ i (p t\/ p₁) = M1 σ i p ∧ M1 σ i p₁ 
-M1 σ i (p t/\ p₁) = M1 σ i p ∨ M1 σ i p₁ 
-
-data LITL ( V : Set )  : Set where
-    iv :  V → LITL V
-    i○ :  LITL V → LITL V
-    _&_  :  LITL V → LITL  V → LITL  V
-    i-not :  LITL V → LITL  V
-    _i\/_ :  LITL V → LITL  V → LITL  V
-    _i/\_ :  LITL V → LITL  V → LITL  V
-
-open import Relation.Binary.Definitions
-open import Data.Unit using ( tt ; ⊤ )
-
-{-# TERMINATING #-}
-MI : { V : Set } → (ℕ → V → Bool) → (i j : ℕ) → i ≤ j  →  LITL V  → Set
-MI σ i j lt (iv x) = σ i x ≡ true
-MI σ i j lt (i○ x) with <-cmp i j
-... | tri< a ¬b ¬c = MI σ (suc i) j {!!} x
-... | tri≈ ¬a b ¬c = ⊤
-... | tri> ¬a ¬b c = ⊥-elim ( nat-≤> lt c)
-MI σ i j lt (p & q) = ¬ ( ( k : ℕ) → (i<k : i ≤ k) → (k<j : k ≤ j) → ¬ ( MI σ i k i<k p ∧ MI σ k j k<j p))
-MI σ i j lt (i-not p) = ¬ ( MI σ i j lt p )
-MI σ i j lt (p i\/ p₁) = MI σ i j lt p ∧ MI σ i j lt p₁ 
-MI σ i j lt (p i/\ p₁) = MI σ i j lt p ∨ MI σ i j lt p₁ 
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/automaton-in-agda/src/temporal-logic.agda	Fri Jan 21 12:31:34 2022 +0900
@@ -0,0 +1,102 @@
+module temporal-logic  where
+
+open import Level renaming ( suc to succ ; zero to Zero )
+open import Data.Nat
+open import Data.List
+open import Data.Maybe
+-- open import Data.Bool using ( Bool ; true ; false ; _∧_ ) renaming ( not to negate )
+open import  Relation.Binary.PropositionalEquality hiding ( [_] )
+open import Relation.Nullary -- using (not_; Dec; yes; no)
+open import Data.Empty
+
+open import logic
+open import automaton
+
+open Automaton 
+
+
+open import nat
+open import Data.Nat.Properties
+
+data LTTL ( V : Set )  : Set where
+    s :  V → LTTL V
+    ○ :  LTTL V → LTTL V
+    □ :  LTTL V → LTTL V
+    ⋄ :  LTTL V → LTTL V
+    _U_  :  LTTL V → LTTL  V → LTTL  V
+    t-not :  LTTL V → LTTL  V
+    _t\/_ :  LTTL V → LTTL  V → LTTL  V
+    _t/\_ :  LTTL V → LTTL  V → LTTL  V
+
+{-# TERMINATING #-}
+M1 : { V : Set } → (ℕ → V → Bool) → ℕ →  LTTL V  → Set
+M1 σ i (s x) = σ i x ≡ true
+M1 σ i (○ x) = M1 σ (suc i) x  
+M1 σ i (□ p) = (j : ℕ) → i ≤ j → M1  σ j p
+M1 σ i (⋄ p) = ¬ ( M1 σ i (t-not p) )
+M1 σ i (p U q) = ¬ ( ( j : ℕ) → i ≤ j → ¬ (M1 σ j q ∧ (( k : ℕ) → i ≤ k → k < j → M1 σ j p )) )
+M1 σ i (t-not p) = ¬ ( M1 σ i p )
+M1 σ i (p t\/ p₁) = M1 σ i p ∧ M1 σ i p₁ 
+M1 σ i (p t/\ p₁) = M1 σ i p ∨ M1 σ i p₁ 
+
+data LITL ( V : Set )  : Set where
+    iv :  V → LITL V
+    i○ :  LITL V → LITL V
+    _&_  :  LITL V → LITL  V → LITL  V
+    i-not :  LITL V → LITL  V
+    _i\/_ :  LITL V → LITL  V → LITL  V
+    _i/\_ :  LITL V → LITL  V → LITL  V
+
+open import Relation.Binary.Definitions
+open import Data.Unit using ( tt ; ⊤ )
+
+{-# TERMINATING #-}
+MI : { V : Set } → (ℕ → V → Bool) → (i j : ℕ) → i ≤ j  →  LITL V  → Set
+MI σ i j lt (iv x) = σ i x ≡ true
+MI σ i j lt (i○ x) with <-cmp i j
+... | tri< a ¬b ¬c = MI σ (suc i) j {!!} x
+... | tri≈ ¬a b ¬c = ⊤
+... | tri> ¬a ¬b c = ⊥-elim ( nat-≤> lt c)
+MI σ i j lt (p & q) = ¬ ( ( k : ℕ) → (i<k : i ≤ k) → (k<j : k ≤ j) → ¬ ( MI σ i k i<k p ∧ MI σ k j k<j p))
+MI σ i j lt (i-not p) = ¬ ( MI σ i j lt p )
+MI σ i j lt (p i\/ p₁) = MI σ i j lt p ∧ MI σ i j lt p₁ 
+MI σ i j lt (p i/\ p₁) = MI σ i j lt p ∨ MI σ i j lt p₁ 
+
+data QBool ( V : Set )  : Set where
+    qb :  Bool → QBool V
+    qv :  V → QBool V
+    exists :  V → QBool V → QBool V
+    b-not :  QBool V → QBool  V
+    _b\/_ :  QBool V → QBool  V → QBool  V
+    _b/\_ :  QBool V → QBool  V → QBool  V
+
+{-# TERMINATING #-}
+SQ1 : { V : Set } → ((x y : V) → Dec ( x ≡ y))   → QBool V → V  → Bool → QBool V
+SQ1 {V} dec (qb x) v t = qb x
+SQ1 {V} dec (qv x) v t with dec x v
+... | yes _ = qb t
+... | no _ = qv x
+SQ1 {V} dec (exists x p) v t = SQ1 dec (SQ1 dec p x true) v t b\/  SQ1 dec (SQ1 dec p x false) v t
+SQ1 {V} dec (b-not p) v t = b-not (SQ1 dec p v t )
+SQ1 {V} dec (p b\/ p₁) v t =  SQ1 dec p v t b\/  SQ1 dec p₁ v t
+SQ1 {V} dec (p b/\ p₁) v t = SQ1 dec p v t b/\  SQ1 dec p₁ v t
+
+{-# TERMINATING #-}
+MQ : { V : Set } → (V → Bool) → ((x y : V) → Dec ( x ≡ y))   → QBool V → Bool
+MQ {V} val dec (qb x) = x
+MQ {V} val dec (qv x) = val x
+MQ {V} val dec (exists x p) =  MQ val dec ( SQ1 dec p x true b\/ SQ1 dec p x false )
+MQ {V} val dec (b-not p) = not ( MQ val dec p )
+MQ {V} val dec (p b\/ p₁) = MQ val dec p \/ MQ val dec p₁ 
+MQ {V} val dec (p b/\ p₁) = MQ val dec p /\ MQ val dec p₁ 
+
+data QPTL ( V : Set )  : Set where
+    qs :  V → QPTL V
+    q○ :  QPTL V → QPTL V
+    q□ :  QPTL V → QPTL V
+    q⋄ :  QPTL V → QPTL V
+    q-exists :  V → QPTL V → QPTL V
+    q-not :  QPTL V → QPTL  V
+    _q\/_ :  QPTL V → QPTL  V → QPTL  V
+    _q/\_ :  QPTL V → QPTL  V → QPTL  V
+