File: unbound_ex_tyvars.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 (17 lines) | stat: -rw-r--r-- 551 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
default Order dec
$include <prelude.sail>

/* We currently produce a rich type for the guard of the if that's
   visible in the Coq output.  The raw Sail type involves unbound type
   variables that were existentially bound in x, so in order to print
   out a useful Coq type we now rewrite it in terms of x. */

val isA : unit -> bool effect {rreg}
val isB : unit -> bool effect {rreg}
val isC : unit -> bool effect {rreg}
val foo : bool -> bool effect {rreg}

function foo(b) = {
  let x = (b | isA()) & isB();
  if x | isC() then true else false
}