From 41e6fe10e7d28193fa62711fcdad797b1f0103a0 Mon Sep 17 00:00:00 2001 From: Alasdair Armstrong Date: Mon, 13 May 2019 18:03:35 +0100 Subject: Add feature that allows functions to require type variables are constant can now write e.g. forall (constant 'n : Int) rather than forall ('n: Int) which requires 'n to be a constant integer value whenever the function is called. I added this to the 'addrsize variable on memory reads/writes to absolutely guarantee in the SMT generation that we don't have to worry about the address being a variable length bitvector. --- src/parse_ast.ml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'src/parse_ast.ml') diff --git a/src/parse_ast.ml b/src/parse_ast.ml index 91fb0610..5c3a5382 100644 --- a/src/parse_ast.ml +++ b/src/parse_ast.ml @@ -172,8 +172,7 @@ and atyp = and kinded_id_aux = (* optionally kind-annotated identifier *) - KOpt_none of kid (* identifier *) - | KOpt_kind of kind * kid (* kind-annotated variable *) + KOpt_kind of string option * kid list * kind option (* kind-annotated variable *) and kinded_id = @@ -182,7 +181,7 @@ kinded_id = type quant_item_aux = (* Either a kinded identifier or a nexp constraint for a typquant *) QI_id of kinded_id (* An optionally kinded identifier *) - | QI_const of atyp (* A constraint for this type *) + | QI_constraint of atyp (* A constraint for this type *) type -- cgit v1.2.3