@@ -60,6 +60,7 @@ and prv_options = {
6060 prvo_timeout : int option ;
6161 prvo_cpufactor : int option ;
6262 prvo_provers : string list option ;
63+ prvo_quorum : int option ;
6364 prvo_pragmas : string list ;
6465 prvo_ppwidth : int option ;
6566 prvo_checkall : bool ;
@@ -86,6 +87,7 @@ type ini_options = {
8687 ini_why3 : string option ;
8788 ini_ovrevict : string list ;
8889 ini_provers : string list ;
90+ ini_quorum : int option ;
8991 ini_timeout : int option ;
9092 ini_idirs : (string option * string ) list ;
9193 ini_rdirs : (string option * string ) list ;
@@ -107,6 +109,8 @@ module Ini : sig
107109
108110 val get_provers : ini_context -> string list
109111
112+ val get_quorum : ini_context -> int option
113+
110114 val get_timeout : ini_context -> int option
111115
112116 val get_idirs : ini_context -> (string option * string ) list
@@ -122,6 +126,8 @@ module Ini : sig
122126
123127 val get_all_provers : ini_context list -> string list
124128
129+ val get_all_quorum : ini_context list -> int option
130+
125131 val get_all_timeout : ini_context list -> int option
126132
127133 val get_all_idirs : ini_context list -> (string option * string ) list
@@ -153,6 +159,9 @@ end = struct
153159 let get_provers (ini : ini_context ) =
154160 ini.inic_ini.ini_provers
155161
162+ let get_quorum (ini : ini_context ) =
163+ ini.inic_ini.ini_quorum
164+
156165 let get_timeout (ini : ini_context ) =
157166 ini.inic_ini.ini_timeout
158167
@@ -179,6 +188,9 @@ end = struct
179188 let get_all_provers (ini : ini_context list ) =
180189 List. flatten (List. map get_provers ini)
181190
191+ let get_all_quorum (ini : ini_context list ) =
192+ List. find_map_opt get_quorum ini
193+
182194 let get_all_timeout (ini : ini_context list ) =
183195 List. find_map_opt get_timeout ini
184196
@@ -391,6 +403,7 @@ let specs = {
391403 (" provers" , " Options related to provers" , [
392404 `Spec (" p" , `String , " Add a prover to the set of provers" );
393405 `Spec (" max-provers" , `Int , " Maximum number of prover running in the same time" );
406+ `Spec (" quorum" , `Int , " Set prover quorum" );
394407 `Spec (" timeout" , `Int , " Set the SMT timeout" );
395408 `Spec (" cpu-factor" , `Int , " Set the timeout CPU factor" );
396409 `Spec (" check-all" , `Flag , " Force checking all files" );
@@ -509,6 +522,11 @@ let prv_options_of_values ini values =
509522 end ;
510523 prvo_cpufactor = get_int " cpu-factor" values;
511524 prvo_provers = provers;
525+ prvo_quorum = begin
526+ match get_int " quorum" values with
527+ | None -> Ini. get_all_quorum ini
528+ | Some _ as i -> i
529+ end ;
512530 prvo_pragmas = get_string_list " pragmas" values;
513531 prvo_ppwidth = begin
514532 match get_int " pp-width" values with
@@ -729,6 +747,7 @@ let read_ini_file (filename : string) =
729747 ini_why3 = tryget " why3conf" ;
730748 ini_ovrevict = trylist " no-evict" ;
731749 ini_provers = trylist " provers" ;
750+ ini_quorum = tryint " quorum" ;
732751 ini_timeout = tryint " timeout" ;
733752 ini_idirs = List. map parse_idir (trylist " idirs" );
734753 ini_rdirs = List. map parse_idir (trylist " rdirs" ); } in
@@ -737,6 +756,7 @@ let read_ini_file (filename : string) =
737756 ini_why3 = omap expand ini.ini_why3;
738757 ini_ovrevict = ini.ini_ovrevict;
739758 ini_provers = ini.ini_provers;
759+ ini_quorum = ini.ini_quorum;
740760 ini_timeout = ini.ini_timeout;
741761 ini_idirs = ini.ini_idirs;
742762 ini_rdirs = ini.ini_rdirs; }
0 commit comments