package alt-ergo-lib
The Alt-Ergo SMT prover library
Install
Dune Dependency
Authors
Maintainers
Sources
alt-ergo-2.3.3.tar.gz
sha256=52e9e9cdbedf7afd1b32154dfb71ca7bead44fa2efcab7eb6d9ccc1989129388
md5=3b060044767d16d1de3416944abd2dd5
doc/src/alt-ergo-lib/util.ml.html
Source file util.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
(******************************************************************************) (* *) (* Alt-Ergo: The SMT Solver For Software Verification *) (* Copyright (C) 2013-2018 --- OCamlPro SAS *) (* *) (* This file is distributed under the terms of the license indicated *) (* in the file 'License.OCamlPro'. If 'License.OCamlPro' is not *) (* present, please contact us to clarify licensing. *) (* *) (******************************************************************************) exception Timeout exception Unsolvable exception Cmp of int module MI = Map.Make(struct type t = int let compare a b = a - b end) module SS = Set.Make(String) (** Different values for -case-split-policy option: -after-theory-assume (default value): after assuming facts in theory by the SAT -before-matching: just before performing a matching round -after-matching: just after performing a matching round **) type case_split_policy = | AfterTheoryAssume (* default *) | BeforeMatching | AfterMatching type inst_kind = Normal | Forward | Backward type sat_solver = | Tableaux | Tableaux_CDCL | CDCL | CDCL_Tableaux type theories_extensions = | Sum | Adt | Arrays | Records | Bitv | LIA | LRA | NRA | NIA | FPA type axiom_kind = Default | Propagator let th_ext_of_string ext = match ext with | "Sum" -> Some Sum | "Adt" -> Some Adt | "Arrays" -> Some Arrays | "Records" -> Some Records | "Bitv" -> Some Bitv | "LIA" -> Some LIA | "LRA" -> Some LRA | "NRA" -> Some NRA | "NIA" -> Some NIA | "FPA" -> Some FPA | _ -> None let string_of_th_ext ext = match ext with | Sum -> "Sum" | Adt -> "Adt" | Arrays -> "Arrays" | Records -> "Records" | Bitv -> "Bitv" | LIA -> "LIA" | LRA -> "LRA" | NRA -> "NRA" | NIA -> "NIA" | FPA -> "FPA" let [@inline always] compare_algebraic s1 s2 f_same_constrs_with_args = let r1 = Obj.repr s1 in let r2 = Obj.repr s2 in match Obj.is_int r1, Obj.is_int r2 with | true, true -> Stdlib.compare s1 s2 (* both constructors without args *) | true, false -> -1 | false, true -> 1 | false, false -> let = Obj.tag r1 - Obj.tag r2 in if cmp_tags <> 0 then cmp_tags else f_same_constrs_with_args (s1, s2) let [@inline always] cmp_lists l1 l2 cmp_elts = try List.iter2 (fun a b -> let c = cmp_elts a b in if c <> 0 then raise (Cmp c) )l1 l2; 0 with | Cmp n -> n | Invalid_argument _ -> List.length l1 - List.length l2 type matching_env = { nb_triggers : int; triggers_var : bool; no_ematching: bool; greedy : bool; use_cs : bool; backward : inst_kind } let print_list ~sep ~pp fmt l = match l with [] -> () | e :: l -> Format.fprintf fmt "%a" pp e; List.iter (fun e -> Format.fprintf fmt "%s %a" sep pp e) l let rec print_list_pp ~sep ~pp fmt = function | [] -> () | [x] -> pp fmt x | x :: l -> Format.fprintf fmt "%a %a" pp x sep (); print_list_pp ~sep ~pp fmt l
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>