[opentheory-users] reading articles from standard input
Joe Leslie-Hurd
joe at gilith.com
Mon Oct 1 04:32:38 UTC 2012
Hi Ramana,
>> You can prefix an input with a type
> Is this documented anywhere?
> In particular, would it be hard to include in the usage/help text the
> tool emits, or to write a man page or manual for the tool?
I've just released a version of the tool with much improved usage
documentation, so for instance
opentheory info -h
shows the legal input formats for the info command. Also, the output from the
opentheory help
command (copied below) is in a suitable form to be turned into a man
page if needed for a distro package of the opentheory tool.
Cheers,
Joe
_____________________________________________
$ opentheory help
opentheory: displaying help on all available commands
usage: opentheory [global options] command [command options] INPUT ...
where the available commands are:
opentheory cleanup ..... clean up theory packages staged for installation
opentheory export ...... export an installed theory package from OpenTheory
opentheory help ........ display help on all available commands
opentheory info ........ extract information from theory packages and files
opentheory init ........ initialize a new package directory
opentheory install ..... install a package from a theory file or repo
opentheory list ........ list installed theory packages
opentheory uninstall ... uninstall an installed theory package
opentheory update ...... update repo package lists
opentheory upload ...... upload theory packages to a repo
Displaying all options:
-d, --root-dir DIR .... (global) use this theory package directory
--repo REPO ........... (global) use these theory package repos
--format FORMAT ....... (info) format package information
--information ......... (info) display all package information
--summary ............. (info) display the package summary
--article ............. (info) output the theory package in article format
--inference ........... (info) display the number of primitive inferences
--theory .............. (info) display the package theory file
--files ............... (info) list the package files
--includes ............ (info) list the included theory packages
--requires ............ (info) list satisfying required theory packages
--document ............ (info) output the package document in HTML format
--theorems ............ (info) output the package theorems in article format
-o, --output FILE ..... (info) write previous package information to FILE
--show-assumptions .... (info) do not omit satisfied assumptions
--show-derivations .... (info) show the assumptions/axioms for each theorem
--upgrade-theory ...... (info) upgrade the theory file to the latest versions
--preserve-theory ..... (info) do not optimize the theory file
--repo ................ (init) configure the new package directory as a repo
--reinstall ........... (install) uninstall the package if it exists
--auto-uninstall ...... (install) also uninstall included packages
--manual .............. (install) do not also install included packages
--name NAME ........... (install) confirm the package name
--checksum CHECKSUM ... (install) confirm the package checksum
--stage ............... (install) stage the package for installation
--dependency-order .... (list) list packages in dependency order
--include-order ....... (list) list packages in include order
--reverse-order ....... (list) reverse the order
--format FORMAT ....... (list) set the output format
--auto ................ (uninstall) also uninstall included packages
--manual .............. (upload) do not also upload subtheory packages
--yes ................. (upload) do not ask for confirmation
-- .................... no more options
-?, -h, --help ........ display option information and exit
-v, --version ......... display version information
INPUT is one of the following forms:
1. A theory package: NAME-VERSION or NAME (for the latest version)
2. A theory file: FILE.thy or theory:FILE
3. A proof article file: FILE.art or article:FILE
4. A theory package tarball: FILE.tgz or tarball:FILE
5. A theory package staged for installation: staged:NAME-VERSION
The list command takes a special QUERY input:
QUERY represents a subset S of the installed theory packages P, as follows:
1. A FUNCTION expression in the grammar below is parsed from the command
line, which represents a function f of type S -> S
2. Another function g of type S -> S is computed, which may be represented
by the FUNCTION expression ~Empty (Latest - Subtheories) All
3. The set f(g({})) is evaluated as the result, where {} is the empty set
FUNCTION // represents a function with type S -> S
<- SET // the constant function with return value SET
|| PREDICATE // the filter function with predicate PREDICATE
|| FUNCTION FUNCTION
// \f g s. f (g s)
|| FUNCTION | FUNCTION
// \f g s. { p in P | p in f(s) \/ p in g(s) }
|| FUNCTION & FUNCTION
// \f g s. { p in P | p in f(s) /\ p in g(s) }
|| FUNCTION - FUNCTION
// \f g s. { p in P | p in f(s) /\ ~p in g(s) }
|| FUNCTION? // \f. Identity | f
|| FUNCTION* // \f. Identity | f | f f | f f f | ...
|| FUNCTION+ // \f. f | f f | f f f | ...
|| Identity // \s. s
|| Requires // \s. { p in P | ?q in s. q requires p }
|| RequiredBy // \s. { p in P | ?q in s. p requires q }
|| Includes // \s. { p in P | ?q in s. q includes p }
|| IncludedBy // \s. { p in P | ?q in s. p includes q }
|| Subtheories // \s. { p in P | ?q in s. p is a subtheory of q }
|| SubtheoryOf // \s. { p in P | ?q in s. q is a subtheory of p }
|| Versions // \s. { p in P | ?q in s. p is a version of q }
|| Latest // \s. { p in s | ~?q in s. q is a later version of p }
|| Deprecated // (Identity - Latest) (Requires | Includes)*
|| Obsolete // All - (Requires | Includes)*
|| Upgradable // EarlierThanRepo
|| Uploadable // Mine /\ ~OnRepo /\ ~EarlierThanRepo /\ ConsistentWithRepo
PREDICATE // represents a predicate with type P -> bool
<- PREDICATE \/ PREDICATE
// \f g p. f(p) \/ g(p)
|| PREDICATE /\ PREDICATE
// \f g p. f(p) /\ g(p)
|| ~PREDICATE // \f p. ~f(p)
|| Empty // does the package have an empty theory (i.e., main {})?
|| Mine // does the package author match a name in the config file?
|| Closed // are all the required theories installed?
|| Acyclic // is the required theory graph free of cycles?
|| WellFounded // are all assumptions satisfied and inputs grounded?
|| OnRepo // is there a theory package with the same name on the repo?
|| IdenticalOnRepo
// is this exact same theory package on the repo?
|| ConsistentWithRepo
// are all the included packages consistent with the repo?
|| EarlierThanRepo
// is there a later version of this ackage on the repo?
|| LaterThanRepo
// is this package later than all versions on the repo?
SET // represents a set with type S
<- All // P
|| None // {}
|| NAME // \n. Latest { p in P | p has name n }
|| NAME-VERSION // \n v. { p in P | p has name n and version v }
NAME is any package name (e.g., base).
VERSION is any package version (e.g., 1.0).
FILE is any filename; use - to read from stdin or write to stdout.
FORMAT is any string containing {NAME,VERSION,DESCRIPTION,CHECKSUM,EMPTY}.
DIR is any directory on the file system.
REPO is the name of any repo in the config file (e.g., gilith).
More information about the opentheory-users
mailing list