@@ -39,10 +39,22 @@ struct
39
39
let initial: t = (P2 , Env. singleton " x" 1 )
40
40
41
41
let step ((point , env ): t ): t list =
42
- failwith " TODO"
42
+ match point with
43
+ | P2 -> nondet P3 " y" (- 10 , 10 ) env
44
+ | P3 -> nondet P4 " z" (- 10 , 10 ) env
45
+ | P4 ->
46
+ if Env. find " z" env > 5 then
47
+ [(P5 , env)]
48
+ else
49
+ [(P7 , env)]
50
+ | P5 -> [(P8 , Env. add " x" (Env. find " y" env) env)]
51
+ | P7 -> [(P8 , Env. add " x" (Env. find " x" env + 1 ) env)]
52
+ | P8 -> []
43
53
44
54
let is_error ((point , env ): t ): bool =
45
- failwith " TODO"
55
+ match point with
56
+ | P8 -> Env. find " x" env = 0
57
+ | _ -> false
46
58
end
47
59
48
60
(* * Mudel järgmise programmi jaoks:
@@ -64,10 +76,22 @@ struct
64
76
let initial: t = (P1 , Env. empty)
65
77
66
78
let step ((point , env ): t ): t list =
67
- failwith " TODO"
79
+ match point with
80
+ | P1 -> nondet P2 " x" (0 , 1500 ) env
81
+ | P2 -> [(P3 , Env. add " y" (Env. find " x" env) env)]
82
+ | P3 ->
83
+ if Env. find " x" env < 1024 then
84
+ [(P4 , env)]
85
+ else
86
+ [(P7 , env)]
87
+ | P4 -> [(P5 , Env. add " x" (Env. find " x" env + 1 ) env)]
88
+ | P5 -> [(P3 , Env. add " y" (Env. find " y" env + 1 ) env)]
89
+ | P7 -> []
68
90
69
91
let is_error ((point , env ): t ): bool =
70
- failwith " TODO"
92
+ match point with
93
+ | P7 -> Env. find " x" env <> Env. find " y" env
94
+ | _ -> false
71
95
end
72
96
73
97
(* * Mudel järgmise programmi jaoks:
@@ -98,11 +122,33 @@ struct
98
122
let initial: t = (P2 , Env. singleton " y" 1 )
99
123
100
124
let step ((point , env ): t ): t list =
101
- failwith " TODO"
125
+ match point with
126
+ | P2 -> nondet P3 " x0" (0 , 5 ) env
127
+ | P3 -> nondet P4 " n0" (1 , 5 ) env
128
+ | P4 -> [(P5 , Env. add " x" (Env. find " x0" env) env)]
129
+ | P5 -> [(P6 , Env. add " n" (Env. find " n0" env) env)]
130
+ | P6 ->
131
+ if Env. find " n" env > 1 then
132
+ [(P7 , env)]
133
+ else
134
+ [(P15 , env)]
135
+ | P7 ->
136
+ if Env. find " n" env mod 2 = 0 then
137
+ [(P8 , env)]
138
+ else
139
+ [(P10 , env)]
140
+ | P8 -> [(P13 , Env. add " n" (Env. find " n" env / 2 ) env)]
141
+ | P10 -> [(P11 , Env. add " y" (Env. find " x" env * Env. find " y" env) env)]
142
+ | P11 -> [(P13 , Env. add " n" ((Env. find " n" env + 1 ) / 2 ) env)]
143
+ | P13 -> [(P6 , Env. add " x" (Env. find " x" env * Env. find " x" env) env)]
144
+ | P15 -> [(P16 , Env. add " y" (Env. find " x" env * Env. find " y" env) env)]
145
+ | P16 -> []
102
146
103
147
(* * Vihje: Kasuta Crashcourse.Basics.pow funktsiooni. *)
104
148
let is_error ((point , env ): t ): bool =
105
- failwith " TODO"
149
+ match point with
150
+ | P16 -> Env. find " y" env <> Crashcourse.Basics. pow (Env. find " x0" env) (Env. find " n0" env)
151
+ | _ -> false
106
152
end
107
153
108
154
(* * Mudel parandatud PowProgram jaoks. *)
@@ -112,7 +158,7 @@ struct
112
158
113
159
let step ((point , env ): t ): t list =
114
160
match point with (* Siin saab üle defineerida ühe juhu. *)
115
-
161
+ | P11 -> [( P13 , Env. add " n " (( Env. find " n " env - 1 ) / 2 ) env)]
116
162
| _ -> step (point, env)
117
163
end
118
164
0 commit comments