annotate ModelChecking.agda @ 953:24255e0dd027

fix
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 13 Sep 2024 13:25:17 +0900
parents 057d3309ed9d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
1 -- {-# OPTIONS --cubical-compatible --allow-unsolved-metas #-}
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
2 {-# OPTIONS --cubical-compatible --safe #-}
635
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
3 module ModelChecking where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
4
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 open import Level renaming (zero to Z ; suc to succ)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 open import Data.Nat hiding (compare)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 open import Data.Nat.Properties as NatProp
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
9 open import Data.Maybe
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 -- open import Data.Maybe.Properties
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 open import Data.Empty
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
12 open import Data.List
710
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
13 -- open import Data.Tree.Binary
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
14 -- open import Data.Product
635
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 open import Function as F hiding (const)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
16 open import Relation.Binary
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 open import Relation.Binary.PropositionalEquality
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
18 open import Relation.Nullary
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 open import logic
933
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 782
diff changeset
20 open import Data.Unit hiding ( _≟_ ) -- ; _≤?_ ; _≤_)
635
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 open import Relation.Binary.Definitions
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
22
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 record AtomicNat : Set where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
24 field
714
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
25 ptr : ℕ -- memory pointer ( unique id of DataGear )
635
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
26 value : ℕ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
27
713
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
28 init-AtomicNat : AtomicNat
714
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 713
diff changeset
29 init-AtomicNat = record { ptr = 0 ; value = 0 }
713
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
30
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
31 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
32 -- single process implemenation
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
33 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
34
710
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
35 f_set : {n : Level } {t : Set n} → AtomicNat → (value : ℕ) → ( AtomicNat → t ) → t
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
36 f_set a v next = next record a { value = v }
635
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
37
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
38 --
711
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 710
diff changeset
39 -- Coda Gear
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
40 --
635
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
diff changeset
41
636
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
42 data Code : Set where
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
43 CC_nop : Code
636
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
44
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
45 --
713
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
46 -- all possible arguments in -APIs
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
47 --
713
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
48 record AtomicNat-API : Set where
636
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
49 field
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
50 next : Code
711
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 710
diff changeset
51 fail : Code
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
52 value : ℕ
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
53 impl : AtomicNat
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
54
713
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
55 data Error : Set where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
56 E_panic : Error
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
57 E_cas_fail : Error
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
58
711
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 710
diff changeset
59 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 710
diff changeset
60 -- Data Gear
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 710
diff changeset
61 --
721
2abfce56523a init 5 phils done without infinite loop
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 720
diff changeset
62 -- waiting / pointer / available
2abfce56523a init 5 phils done without infinite loop
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 720
diff changeset
63 --
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
64
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
65 data Data : Set where
715
8f8f136f2162 insertTree have some bug
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 714
diff changeset
66 -- D_AtomicNat : AtomicNat → ℕ → Data
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
67 CD_AtomicNat : AtomicNat → Data
710
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
68
715
8f8f136f2162 insertTree have some bug
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 714
diff changeset
69 -- data API : Set where
8f8f136f2162 insertTree have some bug
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 714
diff changeset
70 -- A_AtomicNat : AtomicNat-API → API
8f8f136f2162 insertTree have some bug
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 714
diff changeset
71 -- A_Phil : Phil-API → API
710
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
72
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
73
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
74 record Context : Set where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
75 field
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
76 next : Code
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
77 fail : Code
711
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 710
diff changeset
78
715
8f8f136f2162 insertTree have some bug
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 714
diff changeset
79 -- -API list (frame in Gears Agda ) --- a Data of API
8f8f136f2162 insertTree have some bug
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 714
diff changeset
80 -- api : List API
8f8f136f2162 insertTree have some bug
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 714
diff changeset
81 -- c_Phil-API : Maybe Phil-API
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
82 -- c_Phil-API : ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
83 -- c_AtomicNat-API : AtomicNat-API
711
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 710
diff changeset
84
710
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
85 mbase : ℕ
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
86 -- memory : ?
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
87 error : Data
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
88 fail_next : Code
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
89
710
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
90 --
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
91 -- second level stub
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 709
diff changeset
92 --
712
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 711
diff changeset
93 AtomicInt_cas_stub : {n : Level} {t : Set n} → Context → ( Code → Context → t ) → t
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
94 AtomicInt_cas_stub {_} {t} c next = ?
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
95
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
96
711
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 710
diff changeset
97 code_table : {n : Level} {t : Set n} → Code → Context → ( Code → Context → t) → t
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
98 code_table = ?
636
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
99
709
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 708
diff changeset
100 step : {n : Level} {t : Set n} → List Context → (List Context → t) → t
708
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
101 step {n} {t} [] next0 = next0 []
716
a36147bb596d fix context
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 715
diff changeset
102 step {n} {t} (p ∷ ps) next0 = code_table (Context.next p) p ( λ code np → next0 (update-context ps np ++ ( record np { next = code } ∷ [] ))) where
a36147bb596d fix context
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 715
diff changeset
103 update-context : List Context → Context → List Context
a36147bb596d fix context
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 715
diff changeset
104 update-context [] _ = []
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
105 update-context (c1 ∷ t) np = ? -- record c1 { memory = Context.memory np ; mbase = Context.mbase np } ∷ t
708
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
106
713
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
107 init-context : Context
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
108 init-context = record {
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
109 next = CC_nop
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
110 ; fail = CC_nop
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
111 -- ; c_Phil-API = ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
112 -- ; c_AtomicNat-API = record { next = CC_nop ; fail = CC_nop ; value = 0 ; impl = init-AtomicNat }
713
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
113 ; mbase = 0
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
114 -- ; memory = ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
115 ; error = ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
116 ; fail_next = CC_nop
713
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
117 }
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 712
diff changeset
118
718
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 717
diff changeset
119 alloc-data : {n : Level} {t : Set n} → ( c : Context ) → ( Context → ℕ → t ) → t
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 717
diff changeset
120 alloc-data {n} {t} c next = next record c { mbase = suc ( Context.mbase c ) } mnext where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 717
diff changeset
121 mnext = suc ( Context.mbase c )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 717
diff changeset
122
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 717
diff changeset
123 new-data : {n : Level} {t : Set n} → ( c : Context ) → (ℕ → Data ) → ( Context → ℕ → t ) → t
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
124 new-data c x next = alloc-data c $ λ c1 n → ? -- insertTree (Context.memory c1) n (x n) ( λ bt → next record c1 { memory = bt } n )
718
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 717
diff changeset
125
720
e9d781c38629 Ok this is a termination bug og agda
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 719
diff changeset
126 init-AtomicNat0 : {n : Level} {t : Set n} → Context → ( Context → ℕ → t ) → t
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
127 init-AtomicNat0 c1 next = ?
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
128
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
129 add< : { i : ℕ } (j : ℕ ) → i < suc i + j
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
130 add< {i} j = begin
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
131 suc i ≤⟨ m≤m+n (suc i) j ⟩
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
132 suc i + j ∎ where open ≤-Reasoning
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
133
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
134 nat-<> : { x y : ℕ } → x < y → y < x → ⊥
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
135 nat-<> {x} {y} x<y y<x with <-cmp x y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
136 ... | tri< a ¬b ¬c = ⊥-elim ( ¬c y<x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
137 ... | tri≈ ¬a b ¬c = ⊥-elim ( ¬c y<x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
138 ... | tri> ¬a ¬b c = ⊥-elim ( ¬a x<y )
720
e9d781c38629 Ok this is a termination bug og agda
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 719
diff changeset
139
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
140 nat-≤> : { x y : ℕ } → x ≤ y → y < x → ⊥
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
141 nat-≤> {x} {y} x≤y y<x with <-cmp x y
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
142 ... | tri< a ¬b ¬c = ⊥-elim ( ¬c y<x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
143 ... | tri≈ ¬a b ¬c = ⊥-elim ( ¬c y<x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
144 ... | tri> ¬a ¬b c = ?
720
e9d781c38629 Ok this is a termination bug og agda
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 719
diff changeset
145
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
146
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
147 nat-<≡ : { x : ℕ } → x < x → ⊥
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
148 nat-<≡ {x} x<x with <-cmp x x
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
149 ... | tri< a ¬b ¬c = ⊥-elim ( ¬c x<x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
150 ... | tri≈ ¬a b ¬c = ⊥-elim ( ¬c x<x )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
151 ... | tri> ¬a ¬b c = ⊥-elim ( ¬a x<x )
718
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 717
diff changeset
152
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
153 nat-≡< : { x y : ℕ } → x ≡ y → x < y → ⊥
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
154 nat-≡< refl lt = nat-<≡ lt
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
155
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
156 lemma3 : {i j : ℕ} → 0 ≡ i → j < i → ⊥
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
157 lemma3 refl ()
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
158 lemma5 : {i j : ℕ} → i < 1 → j < i → ⊥
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
159 lemma5 {i} {j} i<1 j<i with <-cmp j i
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
160 ... | tri< a ¬b ¬c = ⊥-elim ( ¬c ? )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
161 ... | tri≈ ¬a b ¬c = ⊥-elim (¬a j<i )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
162 ... | tri> ¬a ¬b c = ⊥-elim ( ¬a j<i )
718
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 717
diff changeset
163
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
164 ¬x<x : {x : ℕ} → ¬ (x < x)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
165 ¬x<x x<x = ?
715
8f8f136f2162 insertTree have some bug
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 714
diff changeset
166
949
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
167 TerminatingLoopS : {l m : Level} {t : Set l} (Index : Set m ) → {Invraiant : Index → Set m } → ( reduce : Index → ℕ)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
168 → (r : Index) → (p : Invraiant r)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
169 → (loop : (r : Index) → Invraiant r → (next : (r1 : Index) → Invraiant r1 → reduce r1 < reduce r → t ) → t) → t
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
170 TerminatingLoopS {_} {_} {t} Index {Invraiant} reduce r p loop with <-cmp 0 (reduce r)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
171 ... | tri≈ ¬a b ¬c = loop r p (λ r1 p1 lt → ⊥-elim (lemma3 b lt) )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
172 ... | tri< a ¬b ¬c = loop r p (λ r1 p1 lt1 → TerminatingLoop1 (reduce r) r r1 (m≤n⇒m≤1+n lt1) p1 lt1 ) where
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
173 TerminatingLoop1 : (j : ℕ) → (r r1 : Index) → reduce r1 < suc j → Invraiant r1 → reduce r1 < reduce r → t
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
174 TerminatingLoop1 zero r r1 n≤j p1 lt = loop r1 p1 (λ r2 p1 lt1 → ⊥-elim (lemma5 n≤j lt1))
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
175 TerminatingLoop1 (suc j) r r1 n≤j p1 lt with <-cmp (reduce r1) (suc j)
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
176 ... | tri< a ¬b ¬c = TerminatingLoop1 j r r1 a p1 lt
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
177 ... | tri≈ ¬a b ¬c = loop r1 p1 (λ r2 p2 lt1 → TerminatingLoop1 j r1 r2 (subst (λ k → reduce r2 < k ) b lt1 ) p2 lt1 )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 933
diff changeset
178 ... | tri> ¬a ¬b c = ⊥-elim ( nat-≤> c n≤j )
708
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
179
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
180 -- loop exexution
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
181
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
182 -- concurrnt execution
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
183
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
184 -- state db ( binary tree of processes )
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
185
722
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 721
diff changeset
186 -- depth first execution
708
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
187
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 637
diff changeset
188 -- verify temporal logic poroerries
636
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
189
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
190
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 635
diff changeset
191