annotate src/iflow.sig @ 1205:7cd11380cdf1

WHERE-dependent checking
author Adam Chlipala <adamc@hcoop.net>
date Sun, 04 Apr 2010 17:18:41 -0400
parents 509a6d7b60fb
children 772760df4c4c
rev   line source
adamc@1200 1 (* Copyright (c) 2010, Adam Chlipala
adamc@1200 2 * All rights reserved.
adamc@1200 3 *
adamc@1200 4 * Redistribution and use in source and binary forms, with or without
adamc@1200 5 * modification, are permitted provided that the following conditions are met:
adamc@1200 6 *
adamc@1200 7 * - Redistributions of source code must retain the above copyright notice,
adamc@1200 8 * this list of conditions and the following disclaimer.
adamc@1200 9 * - Redistributions in binary form must reproduce the above copyright notice,
adamc@1200 10 * this list of conditions and the following disclaimer in the documentation
adamc@1200 11 * and/or other materials provided with the distribution.
adamc@1200 12 * - The names of contributors may not be used to endorse or promote products
adamc@1200 13 * derived from this software without specific prior written permission.
adamc@1200 14 *
adamc@1200 15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
adamc@1200 16 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
adamc@1200 17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
adamc@1200 18 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
adamc@1200 19 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
adamc@1200 20 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
adamc@1200 21 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
adamc@1200 22 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
adamc@1200 23 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
adamc@1200 24 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
adamc@1200 25 * POSSIBILITY OF SUCH DAMAGE.
adamc@1200 26 *)
adamc@1200 27
adamc@1200 28 signature IFLOW = sig
adamc@1200 29
adamc@1200 30 type lvar = int
adamc@1200 31
adamc@1200 32 datatype exp =
adamc@1200 33 Const of Prim.t
adamc@1200 34 | Var of int
adamc@1200 35 | Lvar of int
adamc@1200 36 | Func of string * exp list
adamc@1200 37 | Recd of (string * exp) list
adamc@1200 38 | Proj of exp * string
adamc@1200 39 | Finish
adamc@1200 40
adamc@1200 41 datatype reln =
adamc@1200 42 Sql of string
adamc@1200 43 | Eq
adamc@1200 44
adamc@1200 45 datatype prop =
adamc@1200 46 True
adamc@1200 47 | False
adamc@1200 48 | Unknown
adamc@1200 49 | And of prop * prop
adamc@1200 50 | Or of prop * prop
adamc@1200 51 | Reln of reln * exp list
adamc@1200 52 | Select of int * lvar * lvar * prop * exp
adamc@1200 53
adamc@1202 54 exception Imply of prop * prop
adamc@1200 55
adamc@1200 56 val check : Mono.file -> unit
adamc@1200 57
adamc@1200 58 end