summaryrefslogtreecommitdiff
path: root/tests/examplefiles/intsyn.sig
diff options
context:
space:
mode:
Diffstat (limited to 'tests/examplefiles/intsyn.sig')
-rw-r--r--tests/examplefiles/intsyn.sig286
1 files changed, 0 insertions, 286 deletions
diff --git a/tests/examplefiles/intsyn.sig b/tests/examplefiles/intsyn.sig
deleted file mode 100644
index ea505362..00000000
--- a/tests/examplefiles/intsyn.sig
+++ /dev/null
@@ -1,286 +0,0 @@
-(* Internal Syntax *)
-(* Author: Frank Pfenning, Carsten Schuermann *)
-(* Modified: Roberto Virga *)
-
-signature INTSYN =
-sig
-
- type cid = int (* Constant identifier *)
- type mid = int (* Structure identifier *)
- type csid = int (* CS module identifier *)
-
-
- type FgnExp = exn (* foreign expression representation *)
- exception UnexpectedFgnExp of FgnExp
- (* raised by a constraint solver
- if passed an incorrect arg *)
- type FgnCnstr = exn (* foreign constraint representation *)
- exception UnexpectedFgnCnstr of FgnCnstr
- (* raised by a constraint solver
- if passed an incorrect arg *)
-
- (* Contexts *)
-
- datatype 'a Ctx = (* Contexts *)
- Null (* G ::= . *)
- | Decl of 'a Ctx * 'a (* | G, D *)
-
- val ctxPop : 'a Ctx -> 'a Ctx
- val ctxLookup: 'a Ctx * int -> 'a
- val ctxLength: 'a Ctx -> int
-
- datatype Depend = (* Dependency information *)
- No (* P ::= No *)
- | Maybe (* | Maybe *)
- | Meta (* | Meta *)
-
- (* expressions *)
-
- datatype Uni = (* Universes: *)
- Kind (* L ::= Kind *)
- | Type (* | Type *)
-
- datatype Exp = (* Expressions: *)
- Uni of Uni (* U ::= L *)
- | Pi of (Dec * Depend) * Exp (* | Pi (D, P). V *)
- | Root of Head * Spine (* | H @ S *)
- | Redex of Exp * Spine (* | U @ S *)
- | Lam of Dec * Exp (* | lam D. U *)
- | EVar of Exp option ref * Dec Ctx * Exp * (Cnstr ref) list ref
- (* | X<I> : G|-V, Cnstr *)
- | EClo of Exp * Sub (* | U[s] *)
- | AVar of Exp option ref (* | A<I> *)
-
- | FgnExp of csid * FgnExp (* | (foreign expression) *)
-
- | NVar of int (* | n (linear,
- fully applied variable
- used in indexing *)
-
- and Head = (* Head: *)
- BVar of int (* H ::= k *)
- | Const of cid (* | c *)
- | Proj of Block * int (* | #k(b) *)
- | Skonst of cid (* | c# *)
- | Def of cid (* | d (strict) *)
- | NSDef of cid (* | d (non strict) *)
- | FVar of string * Exp * Sub (* | F[s] *)
- | FgnConst of csid * ConDec (* | (foreign constant) *)
-
- and Spine = (* Spines: *)
- Nil (* S ::= Nil *)
- | App of Exp * Spine (* | U ; S *)
- | SClo of Spine * Sub (* | S[s] *)
-
- and Sub = (* Explicit substitutions: *)
- Shift of int (* s ::= ^n *)
- | Dot of Front * Sub (* | Ft.s *)
-
- and Front = (* Fronts: *)
- Idx of int (* Ft ::= k *)
- | Exp of Exp (* | U *)
- | Axp of Exp (* | U *)
- | Block of Block (* | _x *)
- | Undef (* | _ *)
-
- and Dec = (* Declarations: *)
- Dec of string option * Exp (* D ::= x:V *)
- | BDec of string option * (cid * Sub) (* | v:l[s] *)
- | ADec of string option * int (* | v[^-d] *)
- | NDec of string option
-
- and Block = (* Blocks: *)
- Bidx of int (* b ::= v *)
- | LVar of Block option ref * Sub * (cid * Sub)
- (* | L(l[^k],t) *)
- | Inst of Exp list (* | U1, ..., Un *)
- (* It would be better to consider having projections count
- like substitutions, then we could have Inst of Sub here,
- which would simplify a lot of things.
-
- I suggest however to wait until the next big overhaul
- of the system -- cs *)
-
-
-(* | BClo of Block * Sub (* | b[s] *) *)
-
- (* constraints *)
-
- and Cnstr = (* Constraint: *)
- Solved (* Cnstr ::= solved *)
- | Eqn of Dec Ctx * Exp * Exp (* | G|-(U1 == U2) *)
- | FgnCnstr of csid * FgnCnstr (* | (foreign) *)
-
- and Status = (* Status of a constant: *)
- Normal (* inert *)
- | Constraint of csid * (Dec Ctx * Spine * int -> Exp option)
- (* acts as constraint *)
- | Foreign of csid * (Spine -> Exp) (* is converted to foreign *)
-
- and FgnUnify = (* Result of foreign unify *)
- Succeed of FgnUnifyResidual list
- (* succeed with a list of residual operations *)
- | Fail
-
- and FgnUnifyResidual =
- Assign of Dec Ctx * Exp * Exp * Sub
- (* perform the assignment G |- X = U [ss] *)
- | Delay of Exp * Cnstr ref
- (* delay cnstr, associating it with all the rigid EVars in U *)
-
- (* Global signature *)
-
- and ConDec = (* Constant declaration *)
- ConDec of string * mid option * int * Status
- (* a : K : kind or *)
- * Exp * Uni (* c : A : type *)
- | ConDef of string * mid option * int (* a = A : K : kind or *)
- * Exp * Exp * Uni (* d = M : A : type *)
- * Ancestor (* Ancestor info for d or a *)
- | AbbrevDef of string * mid option * int
- (* a = A : K : kind or *)
- * Exp * Exp * Uni (* d = M : A : type *)
- | BlockDec of string * mid option (* %block l : SOME G1 PI G2 *)
- * Dec Ctx * Dec list
- | BlockDef of string * mid option * cid list
- (* %block l = (l1 | ... | ln) *)
- | SkoDec of string * mid option * int (* sa: K : kind or *)
- * Exp * Uni (* sc: A : type *)
-
- and Ancestor = (* Ancestor of d or a *)
- Anc of cid option * int * cid option (* head(expand(d)), height, head(expand[height](d)) *)
- (* NONE means expands to {x:A}B *)
-
- datatype StrDec = (* Structure declaration *)
- StrDec of string * mid option
-
- (* Form of constant declaration *)
- datatype ConDecForm =
- FromCS (* from constraint domain *)
- | Ordinary (* ordinary declaration *)
- | Clause (* %clause declaration *)
-
- (* Type abbreviations *)
- type dctx = Dec Ctx (* G = . | G,D *)
- type eclo = Exp * Sub (* Us = U[s] *)
- type bclo = Block * Sub (* Bs = B[s] *)
- type cnstr = Cnstr ref
-
- exception Error of string (* raised if out of space *)
-
- (* standard operations on foreign expressions *)
- structure FgnExpStd : sig
- (* convert to internal syntax *)
- structure ToInternal : FGN_OPN where type arg = unit
- where type result = Exp
-
- (* apply function to subterms *)
- structure Map : FGN_OPN where type arg = Exp -> Exp
- where type result = Exp
-
- (* apply function to subterms, for effect *)
- structure App : FGN_OPN where type arg = Exp -> unit
- where type result = unit
-
- (* test for equality *)
- structure EqualTo : FGN_OPN where type arg = Exp
- where type result = bool
-
- (* unify with another term *)
- structure UnifyWith : FGN_OPN where type arg = Dec Ctx * Exp
- where type result = FgnUnify
-
- (* fold a function over the subterms *)
- val fold : (csid * FgnExp) -> (Exp * 'a -> 'a) -> 'a -> 'a
- end
-
- (* standard operations on foreign constraints *)
- structure FgnCnstrStd : sig
- (* convert to internal syntax *)
- structure ToInternal : FGN_OPN where type arg = unit
- where type result = (Dec Ctx * Exp) list
-
- (* awake *)
- structure Awake : FGN_OPN where type arg = unit
- where type result = bool
-
- (* simplify *)
- structure Simplify : FGN_OPN where type arg = unit
- where type result = bool
- end
-
- val conDecName : ConDec -> string
- val conDecParent : ConDec -> mid option
- val conDecImp : ConDec -> int
- val conDecStatus : ConDec -> Status
- val conDecType : ConDec -> Exp
- val conDecBlock : ConDec -> dctx * Dec list
- val conDecUni : ConDec -> Uni
-
- val strDecName : StrDec -> string
- val strDecParent : StrDec -> mid option
-
- val sgnReset : unit -> unit
- val sgnSize : unit -> cid * mid
-
- val sgnAdd : ConDec -> cid
- val sgnLookup: cid -> ConDec
- val sgnApp : (cid -> unit) -> unit
-
- val sgnStructAdd : StrDec -> mid
- val sgnStructLookup : mid -> StrDec
-
- val constType : cid -> Exp (* type of c or d *)
- val constDef : cid -> Exp (* definition of d *)
- val constImp : cid -> int
- val constStatus : cid -> Status
- val constUni : cid -> Uni
- val constBlock : cid -> dctx * Dec list
-
- (* Declaration Contexts *)
-
- val ctxDec : dctx * int -> Dec (* get variable declaration *)
- val blockDec : dctx * Block * int -> Dec
-
- (* Explicit substitutions *)
-
- val id : Sub (* id *)
- val shift : Sub (* ^ *)
- val invShift : Sub (* ^-1 *)
-
- val bvarSub : int * Sub -> Front (* k[s] *)
- val frontSub : Front * Sub -> Front (* H[s] *)
- val decSub : Dec * Sub -> Dec (* x:V[s] *)
- val blockSub : Block * Sub -> Block (* B[s] *)
-
- val comp : Sub * Sub -> Sub (* s o s' *)
- val dot1 : Sub -> Sub (* 1 . (s o ^) *)
- val invDot1 : Sub -> Sub (* (^ o s) o ^-1) *)
-
- (* EVar related functions *)
-
- val newEVar : dctx * Exp -> Exp (* creates X:G|-V, [] *)
- val newAVar : unit -> Exp (* creates A (bare) *)
- val newTypeVar : dctx -> Exp (* creates X:G|-type, [] *)
- val newLVar : Sub * (cid * Sub) -> Block
- (* creates B:(l[^k],t) *)
-
- (* Definition related functions *)
- val headOpt : Exp -> Head option
- val ancestor : Exp -> Ancestor
- val defAncestor : cid -> Ancestor
-
- (* Type related functions *)
-
- (* Not expanding type definitions *)
- val targetHeadOpt : Exp -> Head option (* target type family or NONE *)
- val targetHead : Exp -> Head (* target type family *)
-
- (* Expanding type definitions *)
- val targetFamOpt : Exp -> cid option (* target type family or NONE *)
- val targetFam : Exp -> cid (* target type family *)
-
- (* Used in Flit *)
- val rename : cid * string -> unit
-
-end; (* signature INTSYN *)