File: mapping_compose.sail

package info (click to toggle)
sail-ocaml 0.19.1%2Bdfsg5-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 18,008 kB
  • sloc: ml: 75,941; ansic: 8,848; python: 1,342; exp: 560; sh: 474; makefile: 218; cpp: 36
file content (39 lines) | stat: -rw-r--r-- 740 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
default Order dec

$include <prelude.sail>
$include <string.sail>

enum E1 = {A1, B1}
enum E2 = {A2, B2}
enum E3 = {A3, B3}

val m12 : E1 <-> E2
val m23 : E2 <-> E3

mapping m12 = { A1 <-> A2, B1 <-> B2 }
mapping m23 = { A2 <-> A3, B2 <-> B3 }

val m13 : E1 <-> E3

mapping m13 = { e <-> m23(m12(e)) }

val main : unit -> unit

function main() = {
    match m13(A1) {
        A3 => print_endline("ok"),
        _ => print_endline("fail"),
    };
    match m13(B1) {
        B3 => print_endline("ok"),
        _ => print_endline("fail"),
    };
    match m13(A3) {
        A1 => print_endline("ok"),
        _ => print_endline("fail"),
    };
    match m13(B3) {
        B1 => print_endline("ok"),
        _ => print_endline("fail"),
    }
}