pub struct GlobalArgs {Show 25 fields
pub help: (),
pub extra_rule_sets: Vec<String>,
pub verbose: u8,
pub quiet: bool,
pub rule_trace: Option<PathBuf>,
pub rule_trace_aggregates: Option<PathBuf>,
pub rule_trace_cdp: bool,
pub rule_attempt_trace: Option<PathBuf>,
pub parser: Parser,
pub rewriter: Rewriter,
pub comprehension_expander: QuantifiedExpander,
pub heuristic: Heuristic,
pub responses: Vec<usize>,
pub seed: u64,
pub solver_seed: u32,
pub channelling: Channelling,
pub solver: SolverFamily,
pub minion_discrete_threshold: usize,
pub minion_varorder: Option<MinionVariableOrder>,
pub minion_valorder: Option<MinionValueOrder>,
pub save_solver_input_file: Option<PathBuf>,
pub solver_timeout: Option<Duration>,
pub log_file: Option<PathBuf>,
pub log_format: Option<LogFormat>,
pub log_detail: Option<LogDetail>,
}Fields§
§help: ()Print help
extra_rule_sets: Vec<String>Extra rule sets to enable
verbose: u8Increase stderr logging detail (-v: stages, -vv: rule applications, -vvv: rule attempts).
Rule-attempt logging can be expensive and produce a very large amount of output.
quiet: boolDisable warning and progress logs on stderr
rule_trace: Option<PathBuf>Output file for the default rule trace.
rule_trace_aggregates: Option<PathBuf>Output file for aggregated rule-application counts.
The file is updated incrementally in the format:
total_rule_applications: N, followed by one line per rule.
rule_trace_cdp: boolContinue rule trace generation during solver-time CDP rewrites.
This is off by default, so follow-up dominance-blocking rewrites do not contribute to the trace.
rule_attempt_trace: Option<PathBuf>Output file for the rule-attempt trace in CSV format.
Each row includes: elapsed_s, rule_level, rule_name, rule_set, status, expression.
parser: ParserWhich parser to use.
Possible values: tree-sitter, via-conjure.
rewriter: RewriterWhich rewriter to use.
Possible values: baseline, optimised, baseline+prefilter, or baseline+worklist.
Option meanings:
prefilter: skip rules whose declared expression kinds cannot match; strong win vs baseline and part ofoptimised.worklist: drive rewriting from persistent dirty queues instead of repeated full scans; strong win vs baseline and part ofoptimised.
comprehension_expander: QuantifiedExpanderWhich strategy to use for expanding quantified variables in comprehensions.
Possible values: auto, native, via-solver, via-solver-ac. auto chooses
between native and solver-backed expansion from the comprehension’s estimated size and
available pruning constraints.
heuristic: HeuristicHeuristic for selecting an answer when multiple modelling choices are applicable.
Possible values: f (first), r (random), c (compact), i (interactive). Compact
minimises the representation-domain size for representation choices and the resulting AST
depth for equally-applicable rewrite rules. Interactive prompts on stderr, or uses
--responses when provided. x (all) is reserved for model generation and is not
supported by the CLI yet.
responses: Vec<usize>Comma-separated 1-based answers for the interactive heuristic (-h i).
If provided, these are used as the answers during interactive model generation instead of prompting the user.
seed: u64Seed used by the random heuristic.
solver_seed: u32Seed used by the backend solver’s random search behaviour.
channelling: ChannellingWhether multiple representations of the same declaration may be channelled together.
Possible values: no, yes. Channelling is disabled by default. Enable yes to allow
different representations of the same variable at different call sites, e.g.
1 in (x :: set (representation packed) of int) /\ 2 in (x :: set (representation occurrence) of int).
solver: SolverFamilySolver to use.
Possible values: minion, sat, z3.
How a model is expressed for the chosen solver – which SAT encoding an integer gets, or
which Z3 theory – is a modelling choice made per declaration, not part of the solver name.
Use --heuristic to steer those choices and --channelling to allow more than one per
declaration.
minion_discrete_threshold: usizeInt-domain size threshold for using Minion DISCRETE variables.
If an int domain has size <= this value, Conjure Oxide emits DISCRETE; otherwise BOUND.
minion_varorder: Option<MinionVariableOrder>Override Minion variable ordering.
Possible values: static, sdf, srf, ldf, random, conflict, wdeg,
domoverwdeg.
minion_valorder: Option<MinionValueOrder>Override Minion value ordering.
Possible values: ascend, descend, random.
save_solver_input_file: Option<PathBuf>Save a solver input file to
This input file will be in a format compatible by the command-line interface of the selected solver. For example, when the solver is Minion, a valid .minion file will be output.
This file is for informational purposes only; the results of running this file cannot be used by Conjure Oxide in any way.
solver_timeout: Option<Duration>Stop the solver after the given cumulative wall-clock timeout.
Minion has one-second timeout resolution, so finer durations are rounded up.
log_file: Option<PathBuf>Write general logs to this file
log_format: Option<LogFormat>Format used by –log-file [default: text]
log_detail: Option<LogDetail>Detail written by –log-file [default: stages]
Trait Implementations§
Source§impl Args for GlobalArgs
impl Args for GlobalArgs
Source§fn group_id() -> Option<Id>
fn group_id() -> Option<Id>
ArgGroup::id][crate::ArgGroup::id] for this set of argumentsSource§fn augment_args<'b>(__clap_app: Command) -> Command
fn augment_args<'b>(__clap_app: Command) -> Command
Source§fn augment_args_for_update<'b>(__clap_app: Command) -> Command
fn augment_args_for_update<'b>(__clap_app: Command) -> Command
Command] so it can instantiate self via
[FromArgMatches::update_from_arg_matches_mut] Read moreSource§impl Clone for GlobalArgs
impl Clone for GlobalArgs
Source§fn clone(&self) -> GlobalArgs
fn clone(&self) -> GlobalArgs
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GlobalArgs
impl Debug for GlobalArgs
Source§impl FromArgMatches for GlobalArgs
impl FromArgMatches for GlobalArgs
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§fn update_from_arg_matches_mut(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Auto Trait Implementations§
impl Freeze for GlobalArgs
impl RefUnwindSafe for GlobalArgs
impl Send for GlobalArgs
impl Sync for GlobalArgs
impl Unpin for GlobalArgs
impl UnsafeUnpin for GlobalArgs
impl UnwindSafe for GlobalArgs
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘwhere
S: Into<Dispatch>,
§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
Layout§
Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.
Size: 224 bytes