`include MenhirLib.IncrementalEngine.INCREMENTAL_ENGINE with type token = token`
`type token = token`
`type production`
`type 'a env`
`type !'a checkpoint = private`

1. `| InputNeeded of 'a env`
2. `| Shifting of 'a env * 'a env * bool`
3. `| AboutToReduce of 'a env * production`
4. `| HandlingError of 'a env`
5. `| Accepted of 'a`
6. `| Rejected`

`val offer : 'a checkpoint -> (token * MenhirLib.IncrementalEngine.position * MenhirLib.IncrementalEngine.position) -> 'a checkpoint`
`type strategy = [`

1. `|` ``Legacy`
2. `|` ``Simplified`

`]`
`val resume : ?strategy:strategy -> 'a checkpoint -> 'a checkpoint`
`type supplier = unit -> token * MenhirLib.IncrementalEngine.position * MenhirLib.IncrementalEngine.position`
`val lexer_lexbuf_to_supplier : (Stdlib.Lexing.lexbuf -> token) -> Stdlib.Lexing.lexbuf -> supplier`
`val loop : ?strategy:strategy -> supplier -> 'a checkpoint -> 'a`
`val loop_handle : ('a -> 'answer) -> ('a checkpoint -> 'answer) -> supplier -> 'a checkpoint -> 'answer`
`val loop_handle_undo : ('a -> 'answer) -> ('a checkpoint -> 'a checkpoint -> 'answer) -> supplier -> 'a checkpoint -> 'answer`
`val shifts : 'a checkpoint -> 'a env option`
`val acceptable : 'a checkpoint -> token -> MenhirLib.IncrementalEngine.position -> bool`
`type 'a lr1state`
`val number : 'a lr1state -> int`
`val production_index : production -> int`
`val find_production : int -> production`
`type element =`

1. `| Element : 'a lr1state * 'a * MenhirLib.IncrementalEngine.position * MenhirLib.IncrementalEngine.position -> element`

`type stack = element MenhirLib.General.stream`
`val stack : 'a env -> stack`
`val top : 'a env -> element option`
`val pop_many : int -> 'a env -> 'a env option`
`val get : int -> 'a env -> element option`
`val current_state_number : 'a env -> int`
`val equal : 'a env -> 'a env -> bool`
`val positions : 'a env -> MenhirLib.IncrementalEngine.position * MenhirLib.IncrementalEngine.position`
`val env_has_default_reduction : 'a env -> bool`
`val state_has_default_reduction : 'a lr1state -> bool`
`val pop : 'a env -> 'a env option`
`val force_reduction : production -> 'a env -> 'a env`
`val input_needed : 'a env -> 'a checkpoint`