File tree Expand file tree Collapse file tree 7 files changed +34
-65
lines changed Expand file tree Collapse file tree 7 files changed +34
-65
lines changed Original file line number Diff line number Diff line change @@ -46,20 +46,11 @@ Finite state machine
4646  [(-i [1|X]) (+i X)]}) 
4747
4848'input words 
49- (:= e (+i [])) 
50- (:: e binary) 
51- 
52- (:= 0 (+i [0])) 
53- (:: 0 binary) 
54- 
55- (:= 000 (+i [0 0 0])) 
56- (:: 000 binary) 
57- 
58- (:= 010 (+i [0 1 0])) 
59- (:: 010 binary) 
60- 
61- (:= 110 (+i [1 1 0])) 
62- (:: 110 binary) 
49+ (:= e (+i []))        (:: e binary) 
50+ (:= 0 (+i [0]))       (:: 0 binary) 
51+ (:= 000 (+i [0 0 0])) (:: 000 binary) 
52+ (:= 010 (+i [0 1 0])) (:: 010 binary) 
53+ (:= 110 (+i [1 1 0])) (:: 110 binary) 
6354
6455''' 
6556automaton accepting words ending with 00 
Original file line number Diff line number Diff line change 88  [(-i [1|X]) (+i X)]})
99
1010'input words
11- (:= e (+i []))
12- (:: e binary)
13- 
14- (:= 0 (+i [0]))
15- (:: 0 binary)
16- 
17- (:= 000 (+i [0 0 0]))
18- (:: 000 binary)
19- 
20- (:= 010 (+i [0 1 0]))
21- (:: 010 binary)
22- 
23- (:= 110 (+i [1 1 0]))
24- (:: 110 binary)
11+ (:= e (+i []))        (:: e binary)
12+ (:= 0 (+i [0]))       (:: 0 binary)
13+ (:= 000 (+i [0 0 0])) (:: 000 binary)
14+ (:= 010 (+i [0 1 0])) (:: 010 binary)
15+ (:= 110 (+i [1 1 0])) (:: 110 binary)
2516
2617(:= (initial Q) [(-i W) (+a W Q)])
2718(:= (accept Q) [(-a [] Q) accept])
Original file line number Diff line number Diff line change 77(:= (make_bin Name X1 X2 X3 X4)
88  { [(+b Name 1 X1)] [(+b Name 2 X2)] [(+b Name 3 X3)] [(+b Name 4 X4)] })
99
10- (:= b1 #(make_bin b1 0 0 0 1))
11- (:: b1 u4)
12- 
13- (:= b2 #(make_bin b2 0 0 1 1))
14- (:: b2 u4)
10+ (:= b1 #(make_bin b1 0 0 0 1)) (:: b1 u4)
11+ (:= b2 #(make_bin b2 0 0 1 1)) (:: b2 u4)
1512
1613(show #b1)
1714(show #b2)
1815
16+ (:= (if A = X then R = Z) [(-b A I X) (+b R I Z)])
1917(:= (if A = X and B = Y then R = Z) [(-b A I X) (-b B I Y) (+b R I Z)])
2018
2119(:= (and A B R) {
3230(show #ror)
3331(== #ror #(make_bin r 0 0 1 1))
3432
33+ (:= (not A R) {
34+   #(if A = 1 then R = 0)
35+   #(if A = 0 then R = 1) })
36+ (:= rnot (process #b1 #(not b1 r)))
37+ (show #rnot)
38+ (== #rnot #(make_bin r 1 1 1 0))
39+ 
40+ (:= rnand (process #b1 #(and b1 b2 r1) #b2 #(not r1 r2)))
41+ (show #rnand)
42+ 
3543'''
36- (:= (xor A B R) {
37-   #(if A = X and B = X then R = 0) })
38- (:= rxor (process #b1 #(xor b1 b2 r) #b2))
44+ (:= rxor (process #rnand #(and r2 r r3) #ror))
3945(show #rxor)
40- (== #rxor #(make_bin r 0 0 1 0))
4146'''
Original file line number Diff line number Diff line change 66  [(-nat 0) ok]
77  [(-nat (s N)) (+nat N)]})
88
9- (:= 0 (+nat 0))
10- (:: 0 nat)
11- 
12- (:= 1 (+nat (s 0)))
13- (:: 1 nat)
14- 
15- (:= 2 <+nat s s 0>)
16- (:: 2 nat)
9+ (:= 0 (+nat 0))     (:: 0 nat)
10+ (:= 1 (+nat (s 0))) (:: 1 nat)
11+ (:= 2 <+nat s s 0>) (:: 2 nat)
1712
1813(:= add1 [(-nat X) (+nat (s X))])
1914
Original file line number Diff line number Diff line change 88  [(-i [1|X]) (+i X)]})
99
1010'input words
11- (:= e (+i []))
12- (:: e binary)
13- 
14- (:= 0000 (+i [0 0 0 0]))
15- (:: 0000 binary)
16- 
17- (:= 0110 (+i [0 1 1 0]))
18- (:: 0110 binary)
19- 
20- (:= 1110 (+i [1 1 1 0]))
21- (:: 1110 binary)
11+ (:= e (+i []))           (:: e binary)
12+ (:= 0000 (+i [0 0 0 0])) (:: 0000 binary)
13+ (:= 0110 (+i [0 1 1 0])) (:: 0110 binary)
14+ (:= 1110 (+i [1 1 1 0])) (:: 1110 binary)
2215
2316(:= (initial Q) [(-i W) (+a W [] Q)])
2417(:= (accept Q) [(-a [] [] Q) accept])
Original file line number Diff line number Diff line change 88  [-west ok]
99  [-east ok]})
1010
11- (:= n +north)
12- (:: n direction)
11+ (:= n +north) (:: n direction)
1312
14- (spec result {
15-   [(-ok X) ok]
16-   [(-error X) ok]})
13+ (spec result { [(-ok X) ok] [(-error X) ok]})
1714
18- (:= x (+ok a))
19- (:: x result)
15+ (:= x (+ok a)) (:: x result)
2016
2117'pattern matching
2218(:= get_ok {
Original file line number Diff line number Diff line change @@ -28,8 +28,6 @@ type expr =
2828  | List  of  expr  list 
2929[@@ derive eq ]
3030
31- let  pp_err  _  =  " " 
32- 
3331let  primitive =  String. append " %" 
3432
3533let  nil_op =  primitive " nil" 
 
 
   
 
     
   
   
          
    
    
     
    
      
     
     
    You can’t perform that action at this time.
  
 
    
  
    
      
        
     
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments