COLIBRI2(1)
π NAME π
Colibri2 β that's the whole name bestie, that's the program. It's the star of this manual page, and honestly? Main character energy. π
β¨ SYNOPSIS β¨
Colibri2 [OPTION]β¦ [FILE]
okay so literally the shape of it is: the command, then some options if you feel like it, then maybe a file. That's the vibe check. π
Right at the top of the page, before we even hit the real sections, there's these three little options just vibing on their own β no heading, no nothing, they just showed up. Here they are, no cap:
--lra-threshold-max-repeat=INT(absent=50) β the max number of times the LRA interval domain can get modified between decisions. Fifty if you don't say otherwise π--linearizeβ lets simplex add linear approximations in some cases--egraph-merging-roundsβ allows more than one merging round between two congruence classes (the original says "more that one", and I'm just telling you it means more than one, okay π)
πΈ ARGUMENTS πΈ
FILE(absent=<stdin>) β this is your input problem file. And here's the tea: if you don't give it a file,Colibri2slides into interactive mode and reads from stdin instead. So it's never lonely, it's just waiting for you to type at it π«Ά
π OPTIONS π
These are the common options for the colibrics binary. There are. So many. Grab a snack. π
----no-int-to-bvβ yes that is four dashes at the front, don't come for me, that's literally what's written. It switches the integer union and congruence domain over to the BitVector domain.--array-blast-ruleβ use the array blast rule when it's suitable--array-def-valuesβ use inference rules for default values--array-ext-choβ use "Choice" when applying unrestricted extensionality--array-ext-combβ extended combinators--array-no-res-aupβ don't restrict the array's β (select over store) rule--array-no-res-extβ don't restrict the array extensionality rule--array-nseqs-no-ppgβ use the NSeq solver for the theory of Arrays, with no systematic propagation--array-use-inf-rulesβ use the old array decision procedure (retro icon behavior tbh)-b,--backtraceβ enables printing of backtraces.--bv-use-bddβ (no description on the page, it's mysterious like that β¨)--check-headers=BOOL(absent=false) β if true, then the presence of headers gets checked in the input file (and errors get raised if they're not there).--check-status=ENUM(absent=no) β check the answer using smtlib (:status) or colibri (:colibri2-status) information. The check differs with unknown: in the first case any answer is accepted, in the second case only unknown.--color=BOOL(absent=true) β activate coloring of output π--cut-fix-model=INT(absent=1000) β stop FixModel after the given number of conflicts (and you lose the possibility to answer unsat, so, consequences π)--debugβ print the parsed dolmen statement (after expansion of includes)--debug-dotgui-only=VAL(absentCOLIBRI2_DOTGUI_ONLYenv) β display only the given node in the dotgui output--debug-flag dotgui--debug-flag=VALβ debug flags! The--debug-flag=foooption, or more generally--debug-flag=foo:level, activates flagfoofor the given level (empty meansinfo). Level is case-insensitive and can be a full word or a single-letter abbreviation among (d)ebug, (i)nfo (n)otice, (w)arn(ing), (e)rror and (q)uiet. Levels display all the messages of that level or higher β for example thewarninglevel prints both warning and error messages, but not info or debug messages. The value of all flags is set tonoticeunless specified. ikyk yk π§--dec-at-operatorsβ instead of deciding a boolean literal, decide at operators whose value can't be propagated to arguments (e.g. a true disjunction)--def-max-delayed-decision-level=INT(absent=5)--def-max-immediate-decision-level=INT(absent=0)--def-max-unfolding-level=INT(absent=15)--demon-no-avoid-retriggering--dont-print-resultβ check the answer using smtlib (:status) or colibri (:colibri2-status) information. The check differs with unknown: in the first case any answer is accepted, in the second case only unknown. (yes, it's word-for-word the same description as--check-status, that's not me being lazy, that's just what the page says π)--eager-decisionβ do decisions with eager--first-restart=INT(absent=0) β step of the first restart. Only one is done currently.--fixed-choice-order--float-threshold-max-repeat=INT(absent=5000) β number of maximum modification of a domain between decisions-g,--gcβ print statistics about the gc upon exiting--get-model-no-functionβ skip the model of functions symbol and polymorphic constants during get-model--get-model-safeβ skip the model of values that are not sure to be correctly printed (implies get-model-no-function)--header-lang-version=VALβ set the only allowed language version for headers. If not set, all conforming version numbers are allowed.--header-licenses=[,β¦]β set the allowed set of licenses in the headers. An empty list means allow everything. π-i INPUT,--lang=INPUT,--input=INPUTβ set the input language toINPUT(one ofae,dimacs,iCNF,smt2,smt2.6,psmt2,tptp,tptp-6.3.0orzf). Pick your fighter π--learning(absentCOLIBRI2_LEARNINGenv) β activate learning.--limit-last-effort=VALUEβ deactivate last effort after the given time (90%steps,90%time,200steps,200s)--lra-dlβ use the difference logic engine--lra-dl-no-polyβ don't use polynomes when building the difference logic graph--lra-dl-no-rmβ when the LRA representative changes [old_repr = repr + delta], add a constraint stating [old_repr - repr = delta] instead of removing [old_repr] and transferring its constraints to [repr].--lra-fourierβ use FourierMotskin engine instead of Simplex engine--lra-incr-dlβ use the incremental version of the difference logic engine. Sets--lra-dltoo if it's not set.--lra-keep-relations-in-patterns--lra-new-intr-domβ use the new interval domain--lra-pivot-intr-updβ use pivot to update intervals for all elements of pivot class whenever the interval domain of one element changes--lra-relop-norm-to-leβ normalize all relational operators (<,β€,>,β₯) toβ€(glow-up for inequality signs honestly β¨)-m ENUM,--mode=ENUMβ set the input mode. The full mode parses the entire file before iterating over its contents, whereas the incremental mode processes each declaration before parsing the next one. Default is incremental mode.--max-steps=INTβ maximum number of steps.--max-warn=INT(absent=4611686018427387903) β maximum number of warnings to display (excess warnings get counted, and a count of silenced warnings gets reported at the end). That default number is giving "I will never run out of patience" π--negate-goalβ negate assertions marked with(! .. :colibri2 goal).--no-decβ make no decisions, only propagation and model search (fixmodel)--no-eager-instantiationβ don't do eager instantiation--no-fix-modelβ stop at the start of FixModel--no-fm-simplexβ don't use the simplex for simulating fourier-motskin--no-nseqβ do not support the NSeq theory (but possibly use its solver for Arrays)--no-quant-regroup-forall-with-implies--no-quant-remove-unused-variables--no-simplexβ don't use the simplex at all--nseq-baseβ use the Base theory of N-Sequences--nseq-extβ use the Ext theory of N-Sequences, takes overnseq-base--nseq-no-dist-firstβ when checking equalities, do not start with distinct NSeqs. Do it for all.--nseq-no-get-introβ don't introducenseq.getterms to detect equalities or differences between n-sequences--print-successβ activate printing for success. π--quant-always-add-skolemβ add quantifier skolemization (exists) even if the truth value is not known--quant-oldβ use quant old heuristic--quant-user-as-rrβ user pattern are considered as rewrite rules (immediately applied)--quantifier-add-def-from-axiomβ handle axioms that look like definitions as definitions--quantifier-and-cc-on-boolean-operatorsβ match and apply congruence closure on:and, or, xor, imply and not--quantifier-skip-forallβ handle existential quantification but skip universal quantification--remove-coercion-in-patternβ remove coercion in patterns-s SIZE,--size=SIZE(absent=-1) β stop the program if it tries to use more than theSIZEmemory space. Accepts the usual suffixes for sizes:k,M,G,T. Without a suffix, it defaults to a size in octet.--show-stepsβ show the number of steps after solving.--simplex-improve-distanceβ use the simplex for refining distance between variables--smt-trace=VALβ create a partial trace in the given filename.--smt-trace-mode=VALβ change how the partial traces are generated.--somewhat-useful-bias=INT(absent=0) β deactivated ifbias <= 0(the name is sending me, "somewhat useful" π)--sort-last-effort-t TIME,--time=TIME(absent=-1s) β stop the program after a time lapse ofTIME. Accepts the usual suffixes for durations:s,m,h,d. Without a suffix, it defaults to a time in seconds.--trace=VALβ output tef json trace in the given file--try-disprove-forall-using-domainβ try to disprove forall by splitting the domain of the variables--type=BOOL(absent=true) β decide whether to type-check input expressions. If false, only parsing is done.
π GC OPTIONS π
Options to fine-tune the gc. Only experts should use these. Like, genuinely. This is the "you know who you are" section. π«Ά
--gc-a=INT(absent=0) β setGc.allocationpolicy--gc-i=INT(absent=100) β setGc.major_heap_increment--gc-O=INT(absent=500) β setGc.max_overhead--gc-o=INT(absent=200) β setGc.space_overhead--gc-s=INT(absent=1000000) β setGc.minor_heap_size
π¦ COMMON OPTIONS π¦
--help[=FMT](default=auto) β show this help in formatFMT. The valueFMTmust be one ofauto,pager,grofforplain. Withauto, the format ispagerorplainwhenever theTERMenv var is dumb or undefined.--versionβ show version information. β
π EXIT STATUS π
Colibri2 exits with:
0β on success.123β on indiscriminate errors reported on standard error.124β on command line parsing errors.125β on unexpected internal errors (bugs).
Numbers to live by. Memorize them. Periodt. π
π ENVIRONMENT π
These environment variables affect the execution of Colibri2:
COLIBRI2_DOTGUI_ONLYβ see option--debug-dotgui-only.COLIBRI2_LEARNINGβ activate learning.
π BUGS π
You can report bugs at https://git.frama-c.com/ β go off, tell them everything π«Ά
π AUTHORS π
Francois Bobot <francois.bobot@cea.fr> β icon, legend, the moment. π
okay that's the whole page bestie, we ate and left no crumbs πβ¨ β this was Colibri2 0.6, the COLIBRI2(1) manual, and yes the version number and the manual name are literally the last things on the page so I'm putting them in the sign-off like a good hostess. bye bye, have fun not crashing ππ¦π
π¦ where this page comes from
- nixpkgs unstable: ocaml4.14.4-colibri2 0.6
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms