Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
2006.09.13 Version 0.04 2006.11.01 Version 0.04.2 2006.12.20 Version 0.10 initial public release 2006.12.20 Version 0.10.1 - include missing HOL file ottDefine.sml 2006.12.22 Version 0.10.2 - include missing ottmode.el 2007.01.19 Version 0.10.3 - bugfixes - new examples: various TAPL fragments, and an OCaml fragment with concurrency (peterson_caml.ott) - generation of OCaml code for type definitions and generated functions (substitution etc) - merge option to merge ott source files - improved HOL support infrastructure 2007.01.24 Version 0.10.4 - bugfix: allow "-" in bindspec lexing 2007.02.07 Version 0.10.5 - various bugfixes (mostly w.r.t. Coq list support) - various improvements to examples - document generation of OCaml code - (breaking) source syntax changes: keyword "rules" is now replaced by "grammar", and hom "caml" is replaced by "ocaml" 2007.04.06 Version 0.10.6 - fixes and additional examples 2007.07.18 Version 0.10.7 - bug fixes 2007.08.13 Version 0.10.8 - rename module Aux to Auxl, to work around a Windows problem 2007.08.28 Version 0.10.9 - add Windows binary-only release 2007.09.04 Version 0.10.10 - new manual, in browsable html, pdf and postscript - new tex style for typesetting rules (in the tex/ directory) - move emacs mode and hol auxiliaries into new emacs/ and hol/ directories 2007.09.28 Version 0.10.11 - fix bug in Windows version: properly open files in binary mode when writesys and readsys 2007.10.05 Version 0.10.12 - add missing file from Coq proof support: ott_list_eq_dec.v 2007.10.18 Version 0.10.13 - new (experimental!) switch -picky_multiple_parses , to allow multiple parses if the generated code is identical - at present only for filtered LaTeX - some source documentation 2008.02.15 Version 0.10.14 - new parser, with better performance and better support for disambiguation (see Section 14 "Parsing Priorities" in the manual, and changes to Section 20 "Reference: The language of symbolic terms") - new support for context grammars, with automatically generated hole-filling functions (see Section 13 "Context rules" in the manual) - new syntactic sugar flavour of metaproductions: writing "S" instead of "M" gives metaproductions that can be used in concrete terms - various bugfixes 2008.12.16 Version 0.10.15 - support for Isabelle 2008 (Isabelle 2005 syntax no longer produced) - new option -isabelle_primrec : if set to false then ott generates "fun"s instead of "primrec"s (though Isabelle can only sometimes automatically prove termination of these "fun"s). - new declaration "phantom" to turn off type generation for metavariables. 2009.3.9 Version 0.10.16 - release of the experimental Coq locally-nameless backend - aesthetic improvements of the Coq output - -show-post-sort and -show-defns are now by default to make output less noisy 2009.7.19 Version 0.10.17 - fix ocamlvar hom bug - fix bug in Coq backend when dealing with some kinds of dot forms - suppress printing of number of good/bad definition rules if there are no rules - change -tex_show_meta false behaviour to not suppress sugar productions - add % at line ends in rules, to prevent extra spaces (per BCP patch) - remove doc references to the Windows binary distribution. It should be easy to build from source, but we don't have access to a suitable machine. 2010.3.24 Version 0.10.18alpha - The previous command-line options -coq, -hol, etc., are no longer supported; they should be replaced by -o. - By default (unless -merge true is set) the order of the input file is preserved, so one can have mixed sequences of definitions of grammar, of inductive relations, and of embed blocks. - New command-line options -i and -o for specifying multiple input and output files. Input files with non-.ott extensions (.v, .thy, .sml, .ml, .tex) are copied verbatim into the respective outputs. The command-line order of these options is significant: the prover output can be split into multiple output files; each prover output file specified with -o will contain the material from the previous input files specified with -i (since the last -o for this prover). - Better tex default spacing, distinguishing alphabetic and other ("symbolic") terminals based on their ott source strings and wrapping them in \ottkw{} and \ottsym{} respectively. - Support for in-line prover code in premises, e.g. {{ prover code mentioning [[x]] and [[\y.z]] }} ----------------------------------------------- :: rulename conclusion - The {{ phantom }} hom can now be applied to metavariables and to nonterminal rules. In both cases it suppresses generation of a prover or OCaml definition, but any type homs are taken into account when the metavariable or nonterminal root is output as a type. - There is a new hom {{ order ... }} that can be applied to productions which lets one specify the order of arguments of a prover or OCaml constructor independently of the order in which they appear in the production. For example, one might say: | e1 e2 :: :: ReversedApp {{ order [[e2]] [[e1]] }} - There is a new hom {{ coq-universe UniverseName }} that can be applied to metavariable or nonterminal rules, eg to force Ott to generate definitions in Type instead of in Set. - Changed some debug options (eg show-pre-sort) - Ocaml list homs on productions are now permitted - add coq_lngen option for compatibility with the lngen tool - Bug fixes: - problem with comment line in defns terminated with EOF [Jianzhou Zhao] - freshness of identifier in Ott generated functions [Jianzhou Zhao] - processing of parse tree for some cases of dot forms [Scott Owens] - processing of picky_multiple_parses [Scott Owens] - added some error checks - several fixes in the Coq locally-nameless backend [Stephanie Weirich] - performance issue when using contextrules [Nicolas Pouillard] - parens in OCaml substitutions for multiple binders [Vilhelm Sjoberg] 2010.03.29 Version 0.20 - The order among mutually recursive nonterminal definitions in grammar blocks is now preserved in prover output. 2010.04.04 Version 0.20.1 - Support coq-universe hom on blocks of definitions, eg: defns Jop :: '' ::= {{ coq-universe Type }} defn t1 --> t2 :: ::reduce::'' by -------------------------- :: ax_app (\x.t1) v2 --> {v2/x}t1 2010.06.29 - refactor the generated latex for grammars so that condensed grammars can be produced by redefining a couple of latex commands, eg \renewcommand{\ottgrammartabular}[1]{{\raggedright #1}} \renewcommand{\ottrulehead}[3]{$#1$ $#2$ } \renewcommand{\ottprodline}[6]{{}\ ${}#1$\mbox{\ {}$#2$}{}} \renewcommand{\ottfirstprodline}[6]{{}\ ${}$\mbox{\ {}$#2$}{}} \renewcommand{\ottprodnewline}{} \renewcommand{\ottinterrule}{\\[1mm]} - add experimental option (-ocaml_include_terminals true) to include, in generated OCaml types, an instance of "terminal" in all the places where there's a terminal in the AST - gforge bugtracker now in use:https://gforge.inria.fr/tracker/?group_id=2980 2010.11.28 Version 0.20.3 - fixes to bugs: 11367 coq-universe Type problem with non-native lists 11368 generation of induction principles in Ott 0.20 11369 0 and O in generated Ott lists 11377 {{}} hypothesis and ln backend 11378 context rules and ln backend - (feature request 11373) Support for explicit naming of premises in inductive rules for the Coq backend. For instance, adding the [[:RED]] annotation below t1 --> t1' [[:RED]] -------------------- :: ctx_app_arg v t1 --> v t1' results in: | ctx_app_arg : forall (v t1 t1':term) (RED: reduce t1 t1'), is_val_of_term v -> reduce (t_app v t1) (t_app v t1'). Names of rules cannot contain spaces or other non alpha-numerical characters, and must begin with a letter. The name annotation must at the rightmost place on the hypothesis line, and must be enclosed (without spaces) between the [[: and ]] parentheses. - (feature request 11372) The Coq backend now tries to preserve the names the user specified in the definition of grammar rules. For instance the grammar definition below grammar term, t :: 't_' ::= | x :: :: Var | \ x . t :: :: Lam (+ bind x in t +) | t t' :: :: App | ( t ) :: S:: Paren {{ icho [[t]] }} | { t / x } t' :: M:: Tsub {{ icho (tsubst_t [[t]] [[x]] [[t']])}} generates Inductive term : Set := | t_var (x:var) | t_lam (x:var) (t:term) | t_app (t:term) (t':term). instead of Inductive term : Set := | t_var : var -> term | t_lam : var -> term -> term | t_app : term -> term -> term. The old behaviour can be obtained via the top-level option -coq_names_in_rules false. 2011.11.17 Version 0.21 - Bump ocamlgraph version to 1.7, to avoid compilation issues with OCaml 3.12.1. - Ported the Isabelle backend to Isabelle2011 (*). - Experimental support for function definitions. As a simple example, in the Ott file below: grammar n :: 'n_' ::= | 0 :: :: Zero | S n :: :: Succ funs Add ::= {{ hol-proof ... }} fun n1 + n2 :: n :: add {{ com a function of type num \to num \to num }} by 0 + n2 === n2 S n1 + n2 === n1 + S n2 the add function is compiled into the following coq code: Fixpoint add (x1:num) (x2:num) : num:= match x1,x2 with | n_zero , n2 => n2 | (n_succ n1) , n2 => (add n1 (n_succ n2) ) end. The "fun n1 + n2 :: n :: add by" declaration specifies: - the name of the function: add - the symbolic term that defines the lhs: n1 + n2 - the symbolic term that defines the rhs: n The type of the arguments of the function is defined by the non-terminals appearing in the lhs, the return type by the rhs non-terminal (so num -> num -> num in the above example). Functions are then defined by case analysis, where the lhs and the rhs are separated by the reserved symbol "===". The {{ hol-proof }} hom allows the specification of a termination proof. - A new option -fast_parse generates a faster parser but removes the possibility of disambiguating ambiguous terms using the :non_terminal: syntax. - The generated Coq substitution functions now use the list_minus2 auxiliary function rather than list_filter, as it is easier to reason about (since rewriting under quantifiers does not work in Coq). Added the -coq_use_filter_fn option for backwards compatibility (*). - Introduced a new embed hom embed {{ coq-lib foo1 foo2 foo3 }} to avoid generation of functions foo1, foo2, foo3 (*) - No longer generate auxiliary list types for formula_dots in Coq backend with -coq_expand_list_types true because today Coq now knows how to generate the right induction principle. - Parsing of defns or embed is more robust wrt newlines (*). - Various bug-fixes (including #13487), improvements to error reports, and performance optimisations. Entries labelled with (*) were contributed by Viktor Vafeiadis. 2011.11.18 Version 0.21.1 This version fixes a packaging problem of the version 0.21. 2011.12.9 Version 0.21.2 - fix bug 13645: forced use of :nonterm: syntax in conclusions of defn rules in 0.21.1 (thanks to Karl Palmskog for reporting the bug). - Added new hom syntax {{* ... *}} that permits {{ and }} appearing inside. The existing syntax {{ ... }} is also valid. - Added embed tex-wrap-pre/tex-wrap-post homs to customize tex wrapping: the default LaTeX header can be changed by writing embed {{ tex-wrap-pre ... }} and the default footer by writing embed {{ tex-wrap-post ... }}. In addition, the program option -tex_wrap false can be used to omit wraping the tex output (-tex_wrap false overrides any tex-wrap-pre/tex-wrap-post embeds). - minor updates to the Hol backend to target the new Hol syntax. 2012.01.04 fix for HOL multiple definitions bug 2012.06.12 fix for HOL syntax change 2012.11.29 bugfix 14175 2012.12.04 bugfix 15158 2013.04.20 - experimental support for generating Lem definitions, including new homs lem, lemvar, ichlo 2013.06.22 - New aux-hom feature: We permit an aux hom on grammar rules. For any rule with such a hom, we transform that rule by appending an "_aux" to its primary nonterminal root name. We then add a synthesised rule with the original nonterminal root name and a single production, with a shape described by the body of the aux hom, which must be of the form {{ aux foo1 foo2 _ bar1 bar2 bar3 }} with a single _ and any number of strings fooi and barj before and after, and no Raw_hom_ident's. The _ is replaced by the original nonterminal root name. For example, given a grammar or metavariable l of source locations, one might say ntr :: 'NTR_' ::= {{ aux _ l }} | ... to synthesise grammars ntr_aux and ntr of unannotated and location-annotated terms, the first with all the original productions and the second with a single production | ntr l :: :: NTR_aux. If the rule has an empty production name wrapper (eg with '' in place of 'NTR_') then the production name is based on the original nonterminal root, capitalised and with _aux appended (eg Ntr_aux), to avoid spurious conflicts. Generation of aux rules is controlled by a command-line option -generate_aux_rules {true|false}, which one might (eg) set to false for latex output and true for OCaml output. - New {{ texlong }} hom on productions, letting long productions be typeset with the production extending into the space usually used for comment, pushing that onto the next line. 2013.07.04 - replace "make" by "$(MAKE)" in Makefile. Should fix 15719, reported by peterbb@ifi.uio.no for OpenBSD 2013.07.04 Version 0.22 - add auxparam hom 2013.10.24 Version 0.23 2013.11.17 - add command-line option -output_source_locations to include comments in the output giving the source locations: i=0 adds no locations i=1 adds a location for each inductive definition rule i=2 also adds a location for other components of the output Location annotations are lines of the form (* #source file FILENAME1 lines M1 - N1 and ... and FILENAMEk lines Mk - Nk *) (or with % instead of (* *) for the Latex output). 2014.01.30 fix bug in {{ order }} hom for Lem backend 2014.01.30 Version 0.24 2014-08-28 Version 0.25 - fix incompatibility with OCaml 4.02.0 comment syntax, from Damien Doligez/Anil Madhavapeddy