You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
1.3 KiB
39 lines
1.3 KiB
4 years ago
|
(*
|
||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||
|
*
|
||
|
* This source code is licensed under the MIT license found in the
|
||
|
* LICENSE file in the root directory of this source tree.
|
||
|
*)
|
||
|
|
||
|
open! IStd
|
||
|
open PulseBasicInterface
|
||
|
|
||
|
type value = AbstractValue.t
|
||
|
|
||
|
type event = Call of {return: value option; arguments: value list}
|
||
|
|
||
|
type vertex = string
|
||
|
|
||
|
type register = string
|
||
|
|
||
|
type configuration = {vertex: vertex; memory: (register * value) list}
|
||
|
|
||
|
(** Let P be the [path_condition] in the enclosing pulse state, and let Q be the [path_condition] in
|
||
|
the [simple_state] below. Then, the facts we know are P∧Q, and it should be that ∃V P∧Q,
|
||
|
where V are the abstract values mentioned in the pre/post-configurations of the simple state, is
|
||
|
equivalent to P. In other words, the facts in Q should not constrain program variables but may
|
||
|
constrain Topl registers. *)
|
||
|
type simple_state =
|
||
|
{ pre: configuration (** at the start of the procedure *)
|
||
|
; post: configuration (** at the current program point *)
|
||
|
; path_condition: PathCondition.t }
|
||
|
|
||
|
(* TODO: include a hash of the automaton in a summary to avoid caching problems. *)
|
||
|
type state = simple_state list
|
||
|
|
||
|
let start () = (* TODO *) []
|
||
|
|
||
|
let small_step _condition _event state = (* TODO *) state
|
||
|
|
||
|
let pp_state _formatter _state = (* TODO *) ()
|