Skip to content

Commit fba349c

Browse files
committed
Con+ semantics.
1 parent 98f1135 commit fba349c

1 file changed

Lines changed: 28 additions & 0 deletions

File tree

www/notes/con-plus/semantics.rkt

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#lang racket
2+
(provide C 𝑪)
3+
(require redex/reduction-semantics
4+
(rename-in (only-in "../con/semantics.rkt" C 𝑪) [C C-] [𝑪 𝑪-]))
5+
6+
(define-extended-language C C-
7+
(e ::= .... (cond [(zero? e_p0) e_a0] ... [else e_an])))
8+
9+
(define-extended-judgment-form C 𝑪-
10+
#:mode (𝑪 I O)
11+
#:contract (𝑪 e i)
12+
13+
[(𝑪 e_p0 i_p0) ... (!= i_p0 0) ... (𝑪 e_pk 0) (𝑪 e_ak i_ak)
14+
--------
15+
(𝑪 (cond [(zero? e_p0) e_a0] ... [(zero? e_pk) e_ak] [(zero? e_pk+1) e_ak+1] ... [else e_an]) i_ak)]
16+
17+
[(𝑪 e_p0 i_p0) ... (!= i_p0 0) ... (𝑪 e_an i_an)
18+
--------
19+
(𝑪 (cond [(zero? e_p0) e_a0] ... [else e_an]) i_an)])
20+
21+
22+
(define-judgment-form C
23+
#:mode (!= I I)
24+
#:contract (!= i i)
25+
[(side-condition (not (= (term i_1) (term i_2))))
26+
----
27+
(!= i_1 i_2)])
28+

0 commit comments

Comments
 (0)