%{
#include <string.h>
#include "frontend/yices/yices_lexer.h"
%}
%struct-type
%define slot-name word
struct keyword_s;
%%
bool,                   TK_BOOL
int,                    TK_INT
real,                   TK_REAL
bitvector,              TK_BITVECTOR
scalar,                 TK_SCALAR
tuple,                  TK_TUPLE
->,                     TK_ARROW
true,                   TK_TRUE
false,                  TK_FALSE
if,                     TK_IF
ite,                    TK_ITE
=,                      TK_EQ
/=,                     TK_DISEQ
distinct,               TK_DISTINCT
or,                     TK_OR
and,                    TK_AND
not,                    TK_NOT
xor,                    TK_XOR
<=>,                    TK_IFF
=>,                     TK_IMPLIES
mk-tuple,               TK_MK_TUPLE
select,                 TK_SELECT
tuple-update,           TK_UPDATE_TUPLE
update,                 TK_UPDATE
forall,                 TK_FORALL
exists,                 TK_EXISTS
lambda,                 TK_LAMBDA
+,                      TK_ADD
-,                      TK_SUB
*,                      TK_MUL
/,                      TK_DIV
^,                      TK_POW
<,                      TK_LT
<=,                     TK_LE
>,                      TK_GT
>=,                     TK_GE
mk-bv,                  TK_MK_BV
bv-add,                 TK_BV_ADD
bv-sub,                 TK_BV_SUB
bv-mul,                 TK_BV_MUL
bv-neg,                 TK_BV_NEG
bv-pow,                 TK_BV_POW
bv-not,                 TK_BV_NOT
bv-and,                 TK_BV_AND
bv-or,                  TK_BV_OR
bv-xor,                 TK_BV_XOR
bv-nand,                TK_BV_NAND
bv-nor,                 TK_BV_NOR
bv-xnor,                TK_BV_XNOR
bv-shift-left0,         TK_BV_SHIFT_LEFT0
bv-shift-left1,         TK_BV_SHIFT_LEFT1
bv-shift-right0,        TK_BV_SHIFT_RIGHT0
bv-shift-right1,        TK_BV_SHIFT_RIGHT1
bv-ashift-right,        TK_BV_ASHIFT_RIGHT
bv-rotate-left,         TK_BV_ROTATE_LEFT
bv-rotate-right,        TK_BV_ROTATE_RIGHT
bv-extract,             TK_BV_EXTRACT
bv-concat,              TK_BV_CONCAT
bv-repeat,              TK_BV_REPEAT
bv-sign-extend,         TK_BV_SIGN_EXTEND
bv-zero-extend,         TK_BV_ZERO_EXTEND
bv-ge,                  TK_BV_GE
bv-gt,                  TK_BV_GT
bv-le,                  TK_BV_LE
bv-lt,                  TK_BV_LT
bv-sge,                 TK_BV_SGE
bv-sgt,                 TK_BV_SGT
bv-sle,                 TK_BV_SLE
bv-slt,                 TK_BV_SLT
bv-shl,                 TK_BV_SHL
bv-lshr,                TK_BV_LSHR
bv-ashr,                TK_BV_ASHR
bv-div,                 TK_BV_DIV
bv-rem,                 TK_BV_REM
bv-sdiv,                TK_BV_SDIV
bv-srem,                TK_BV_SREM
bv-smod,                TK_BV_SMOD
bv-redor,               TK_BV_REDOR
bv-redand,              TK_BV_REDAND
bv-comp,                TK_BV_COMP
bool-to-bv,             TK_BOOL_TO_BV
bit,                    TK_BIT
floor,                  TK_FLOOR
ceil,                   TK_CEIL
abs,                    TK_ABS
div,                    TK_IDIV
mod,                    TK_MOD
divides,                TK_DIVIDES
is-int,                 TK_IS_INT
let,                    TK_LET
define-type,            TK_DEFINE_TYPE
define,                 TK_DEFINE
assert,                 TK_ASSERT
check,                  TK_CHECK
check-assuming,         TK_CHECK_ASSUMING
echo,                   TK_ECHO
push,                   TK_PUSH
pop,                    TK_POP
reset,                  TK_RESET
dump-context,           TK_DUMP_CONTEXT
include,                TK_INCLUDE
exit,                   TK_EXIT
show-model,             TK_SHOW_MODEL
eval,                   TK_EVAL
set-param,              TK_SET_PARAM
show-param,             TK_SHOW_PARAM
show-params,            TK_SHOW_PARAMS
show-stats,             TK_SHOW_STATS
reset-stats,            TK_RESET_STATS
set-timeout,            TK_SET_TIMEOUT
show-timeout,           TK_SHOW_TIMEOUT
help,                   TK_HELP
ef-solve,		TK_EF_SOLVE
export-to-dimacs,       TK_EXPORT_TO_DIMACS
show-implicant,         TK_SHOW_IMPLICANT
show-unsat-core,        TK_SHOW_UNSAT_CORE
show-unsat-assumptions, TK_SHOW_UNSAT_ASSUMPTIONS
show-reduced-model,	TK_SHOW_REDUCED_MODEL
