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.
62 lines
1.2 KiB
62 lines
1.2 KiB
(*
|
|
* 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
|
|
module F = Format
|
|
|
|
module Var = struct
|
|
type t = unit
|
|
|
|
let of_absval _ = ()
|
|
|
|
let to_absval () = assert false
|
|
end
|
|
|
|
module Term = struct
|
|
type t = unit
|
|
|
|
let zero = ()
|
|
|
|
let le () () = ()
|
|
|
|
let lt () () = ()
|
|
|
|
let not_ () = ()
|
|
|
|
let of_intlit _ = ()
|
|
|
|
let of_absval _ = ()
|
|
|
|
let of_unop _ () = ()
|
|
|
|
let of_binop _ () () = ()
|
|
end
|
|
|
|
(* same type as {!PulsePathCondition.t} to be nice to summary serialization *)
|
|
type t = {eqs: Sledge.Equality.t lazy_t; non_eqs: Sledge.Term.t lazy_t}
|
|
|
|
(* still print to make sure the formula never changes in debug *)
|
|
let pp fmt {eqs= (lazy eqs); non_eqs= (lazy non_eqs)} =
|
|
F.fprintf fmt "%a∧%a" Sledge.Equality.pp eqs Sledge.Term.pp non_eqs
|
|
|
|
|
|
let true_ = {eqs= Lazy.from_val Sledge.Equality.true_; non_eqs= Lazy.from_val Sledge.Term.true_}
|
|
|
|
let and_eq () () phi = phi
|
|
|
|
let and_term () phi = phi
|
|
|
|
let and_ phi1 _ = phi1
|
|
|
|
let is_known_zero () _ = false
|
|
|
|
let is_unsat _ = false
|
|
|
|
let fold_map_variables phi ~init ~f:_ = (init, phi)
|
|
|
|
let simplify ~keep:_ phi = phi
|