Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
LTLFILT(1)			 User Commands			    LTLFILT(1)

NAME
       ltlfilt - filter	files or lists of LTL/PSL formulas

SYNOPSIS
       ltlfilt [OPTION...] [FILENAME[/COL]...]

DESCRIPTION
       Read  a	list of	formulas and output them back after some optional pro-
       cessing.

   Input options:
       -f, --formula=STRING
	      process the formula STRING

       -F, --file=FILENAME[/COL]
	      process each line	of FILENAME as a formula; if COL is a positive
	      integer, assume a	CSV file and read column COL; use  a  negative
	      COL to drop the first line of the	CSV file

       --lbt-input
	      read all formulas	using LBT's prefix syntax

       --lenient
	      parenthesized  blocks  that  cannot be parsed as subformulas are
	      considered as atomic properties

   Error handling:
       --drop-errors
	      discard erroneous	lines (default)

       --ignore-errors
	      do not report syntax errors

       --skip-errors
	      output erroneous lines as-is without processing

   Transformation options:
       --boolean-to-isop
	      rewrite Boolean subformulas as irredundant sum of	products  (im-
	      plies at least -r1)

       --define[=FILENAME]
	      when  used with --relabel	or --relabel-bool, output the relabel-
	      ing map using #define statements

       --exclusive-ap=AP,AP,...
	      if any of	those APs occur	in the formula,	add  a	term  ensuring
	      two  of  them may	not be true at the same	time.  Use this	option
	      multiple times to	declare	independent groups of exclusive	propo-
	      sitions.

       --from-ltlf[=alive]
	      transform	LTLf (finite LTL) to LTL by introducing	 some  'alive'
	      proposition

       --negate
	      negate each formula

       --nnf  rewrite formulas in negative normal form

       --relabel[=abc|pnn]
	      relabel all atomic propositions, alphabetically unless specified
	      otherwise

       --relabel-bool[=abc|pnn]
	      relabel Boolean subexpressions that do not share atomic proposi-
	      tions, relabel alphabetically unless specified otherwise

       --relabel-overlapping-bool[=abc|pnn]
	      relabel  Boolean subexpressions even if they share atomic	propo-
	      sitions, relabel alphabetically unless specified otherwise

       --remove-wm
	      rewrite operators	W and M	using U	and R (this is	an  alias  for
	      --unabbreviate=WM)

       --remove-x
	      remove  X	 operators (valid only for stutter-insensitive proper-
	      ties)

       -r, --simplify[=LEVEL]
	      simplify formulas	according to LEVEL (see	below);	LEVEL  is  set
	      to 3 if omitted

       --sonf[=PREFIX]
	      rewrite formulas in suffix operator normal form

       --sonf-aps[=FILENAME]
	      when used	with --sonf, output the	newly introduced atomic	propo-
	      sitions

       --unabbreviate[=STR]
	      remove  all occurrences of the operators specified by STR, which
	      must be a	substring of "eFGiMRW^", where 'e', 'i', and '^' stand
	      respectively for <->, ->,	and xor.  If no	 argument  is  passed,
	      the subset "eFGiMW^" is used.

       The simplification LEVEL	may be set as follows.

       0      No rewriting

       1      basic rewritings and eventual/universal rules

       2      additional syntactic implication rules

       3      better implications using	containment

   Filtering options (matching is done after transformation):
       --accept-word=WORD
	      keep formulas that accept	WORD

       --ap=RANGE
	      match formulas with a number of atomic propositions in RANGE

       --boolean
	      match Boolean formulas

       --bsize=RANGE
	      match formulas with Boolean size in RANGE

       --equivalent-to=FORMULA
	      match formulas equivalent	to FORMULA

       --eventual
	      match pure eventualities

       --guarantee
	      match guarantee formulas (even pathological)

       --implied-by=FORMULA
	      match formulas implied by	FORMULA

       --imply=FORMULA
	      match formulas implying FORMULA

       --liveness
	      match liveness properties

       --ltl  match only LTL formulas (no PSL operator)

       -N, --nth=RANGE
	      assuming	input formulas are numbered from 1, keep only those in
	      RANGE

       --obligation
	      match obligation formulas	(even pathological)

       --persistence
	      match persistence	formulas (even pathological)

       --recurrence
	      match recurrence formulas	(even pathological)

       --reject-word=WORD
	      keep formulas that reject	WORD

       --safety
	      match safety formulas (even pathological)

       --size=RANGE
	      match formulas with size in RANGE

       --stutter-insensitive, --stutter-invariant
	      match stutter-insensitive	LTL formulas

       --suspendable
	      synonym for --universal --eventual

       --syntactic-guarantee
	      match syntactic-guarantee	formulas

       --syntactic-obligation
	      match syntactic-obligation formulas

       --syntactic-persistence
	      match syntactic-persistence formulas

       --syntactic-recurrence
	      match syntactic-recurrence formulas

       --syntactic-safety
	      match syntactic-safety formulas

       --syntactic-stutter-invariant, --nox
	      match stutter-invariant formulas syntactically (LTL-X or siPSL)

       --universal
	      match purely universal formulas

       -u, --unique
	      drop formulas that have already been output (not affected	by -v)

       -v, --invert-match
	      select non-matching formulas

       RANGE may have one of the following forms: 'INT', 'INT..INT',  '..INT',
       or 'INT..'

       WORD  is	 lasso-shaped  and  written as 'BF;BF;...;BF;cycle{BF;...;BF}'
       where BF	are arbitrary Boolean  formulas.   The	'cycle{...}'  part  is
       mandatory, but the prefix can be	omitted.

   Output options:
       -0, --zero-terminated-output
	      separate	output	formulas  with	\0 instead of \n (for use with
	      xargs -0)

       -8, --utf8
	      output using UTF-8 characters

       -c, --count
	      print only a count of matched formulas

       --format=FORMAT,	--stats=FORMAT
	      specify how each line should be output (default: "%f")

       -l, --lbt
	      output in	LBT's syntax

       --latex
	      output using LaTeX macros

       -n, --max-count=NUM
	      output at	most NUM formulas

       -o, --output=FORMAT
	      send output to a file named FORMAT instead of  standard  output.
	      The  first  formula  sent	 to  a file truncates it unless	FORMAT
	      starts with '>>'.

       -p, --full-parentheses
	      output fully-parenthesized formulas

       -q, --quiet
	      suppress all normal output

       -s, --spin
	      output in	Spin's syntax

       --spot output in	Spot's syntax (default)

       --wring
	      output in	Wring's	syntax

       The FORMAT string passed	to --format may	use the	following  interpreted
       sequences:

       %<     the  part	of the line before the formula if it comes from	a col-
	      umn extracted from a CSV file

       %>     the part of the line after the formula if	it comes from a	column
	      extracted	from a CSV file

       %%     a	single %

       %b     the Boolean-length of the	formula	(i.e., all Boolean subformulas
	      count as 1)

       %f     the formula (in the selected syntax)

       %F     the name of the input file

       %h, %[vw]h
	      the class	of the formula is the Manna-Pnueli hierarchy ([v]  re-
	      places  abbreviations  by	 class	names,	[w] for	all compatible
	      classes)

       %l     the serial number	of the output formula

       %L     the original line	number in the input file

       %[OP]n the nesting depth	of operator OP.	 OP should be a	single	letter
	      denoting the operator to count, or multiple letters to fuse sev-
	      eral  operators during depth evaluation.	Add '~'	to rewrite the
	      formula in negative normal form before counting.

       %r     wall-clock time elapsed in seconds (excluding parsing)

       %R, %[LETTERS]R
	      CPU time (excluding parsing), in seconds;	 Add  LETTERS  to  re-
	      strict to	(u) user time, (s) system time,	(p) parent process, or
	      (c) children processes.

       %s     the length (or size) of the formula

       %x, %[LETTERS]X,	%[LETTERS]x
	      number of	atomic propositions used in the

       formula;
	      add LETTERS to list atomic propositions

       with (n)	no quoting, (s)	occasional double-quotes
	      with  C-style escape, (d)	double-quotes with C-style escape, (c)
	      double-quotes with CSV-style escape,  (p)	 between  parentheses,
	      any  extra  non-alphanumeric  character will be used to separate
	      propositions

   Miscellaneous options:
       --help print this help

       --version
	      print program version

       Mandatory or optional arguments to long options are also	 mandatory  or
       optional	for any	corresponding short options.

   Exit	status:
       0      if  some	formulas  were	output	(skipped  syntax errors	do not
	      count)

       1      if no formulas were output (no match)

       2      if any error has been reported

BIBLIOGRAPHY
       If you would like to give a reference to	this tool in  an  article,  we
       suggest you cite	the following paper:

             Alexandre	 Duret-Lutz: Manipulating LTL formulas using Spot 1.0.
	      Proceedings of ATVA'13.  LNCS 8172.

       The following papers describe algorithms	used by	ltlfilt:

             Kousha Etessami: A note on a question of Peled and Wilke regard-
	      ing stutter-invariant LTL. Information Processing	Letters	75(6):
	      261-263 (2000).

	      Describes	the transformation behind the --remove-x option.

             Thibaud Michaud and Alexandre Duret-Lutz:	Practical  stutter-in-
	      variance checks for -regular languages.  Proceedings of SPIN'15.
	      LNCS 9232.

	      Describes	the algorithm used by --stutter-insensitive option.

             Christian	 Dax, Jochen Eisinger, Felix Klaedtke: Mechanizing the
	      Powerset Construction for	Restricted Classes of -Automata.  Pro-
	      ceedings of ATVA'07.  LNCS 4762.

	      Describes	 the  checks implemented by the	--safety, --guarantee,
	      and --obligation options.

             Ivana ern, Radek Pelnek: Relating	Hierarchy of Temporal  Proper-
	      ties to Model Checking.  Proceedings of MFCS'03.	LNCS 2747.

	      Describes	 the  syntactic	 LTL  classes matched by the --syntac-
	      tic-safety,  --syntactic-guarantee,  --syntactic-obligation  op-
	      tions,  --syntactic-persistence,	and --syntactic-recurrence op-
	      tions.

             Kousha Etessami, Gerard J. Holzmann: Optimizing  Bchi  Automata.
	      Proceedings of CONCUR'00.	 LNCS 1877.

	      Describe	the  syntactic	LTL classes matched by --eventual, and
	      --universal.

             Giuseppe De Giacomo, Moshe Y. Vardi: Linear Temporal  Logic  and
	      Linear Dynamic Logic on Finite Traces.  Proceedings of IJCAI'13.

	      Describe the transformation implemented by --from-ltlf to	reduce
	      LTLf model checking to LTL model checking.

REPORTING BUGS
       Report bugs to <spot@lrde.epita.fr>.

COPYRIGHT
       Copyright  (C)  2024  by	the Spot authors, see the AUTHORS File for de-
       tails.  License GPLv3+: GNU GPL version 3 or later  <http://gnu.org/li-
       censes/gpl.html>.
       This  is	 free  software:  you  are free	to change and redistribute it.
       There is	NO WARRANTY, to	the extent permitted by	law.

SEE ALSO
       randltl(1), ltldo(1)

ltlfilt	(spot) 2.12.1		September 2024			    LTLFILT(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ltlfilt&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help