We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 98f1135 commit fba349cCopy full SHA for fba349c
1 file changed
www/notes/con-plus/semantics.rkt
@@ -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