\selectlanguage *{english}
\contentsline {chapter}{\numberline {1}Introduction}{1}{chapter.1}%
\contentsline {chapter}{\numberline {2}Specification language}{3}{chapter.2}%
\contentsline {section}{\numberline {2.1}Core language}{3}{section.2.1}%
\contentsline {subsection}{\numberline {2.1.1}Basic notions and conventions}{3}{subsection.2.1.1}%
\contentsline {subsubsection}{Syntax and lexical conventions}{3}{subsubsection*.4}%
\contentsline {paragraph}{Syntax conventions}{3}{paragraph*.5}%
\contentsline {paragraph}{Lexical conventions}{4}{paragraph*.6}%
\contentsline {subsubsection}{Essential vocabulary}{6}{subsubsection*.30}%
\contentsline {subsubsection}{Settings}{7}{subsubsection*.61}%
\contentsline {paragraph}{Attributes}{8}{paragraph*.62}%
\contentsline {paragraph}{Flags, Options and Tables}{9}{paragraph*.73}%
\contentsline {subparagraph}{Locality attributes supported by \sphinxstyleliteralintitle {\sphinxupquote {Set}} and \sphinxstyleliteralintitle {\sphinxupquote {Unset}}}{10}{subparagraph*.91}%
\contentsline {subsection}{\numberline {2.1.2}Sorts}{10}{subsection.2.1.2}%
\contentsline {subsection}{\numberline {2.1.3}Functions and assumptions}{11}{subsection.2.1.3}%
\contentsline {subsubsection}{Binders}{11}{subsubsection*.103}%
\contentsline {subsubsection}{Functions (fun) and function types (forall)}{12}{subsubsection*.110}%
\contentsline {subsubsection}{Function application}{12}{subsubsection*.113}%
\contentsline {subsubsection}{Assumptions}{13}{subsubsection*.118}%
\contentsline {subsection}{\numberline {2.1.4}Definitions}{14}{subsection.2.1.4}%
\contentsline {subsubsection}{Let\sphinxhyphen {}in definitions}{14}{subsubsection*.140}%
\contentsline {subsubsection}{Type cast}{14}{subsubsection*.143}%
\contentsline {subsubsection}{Top\sphinxhyphen {}level definitions}{14}{subsubsection*.146}%
\contentsline {subsubsection}{Assertions and proofs}{15}{subsubsection*.155}%
\contentsline {subsection}{\numberline {2.1.5}Conversion rules}{16}{subsection.2.1.5}%
\contentsline {subsubsection}{β\sphinxhyphen {}reduction}{16}{subsubsection*.168}%
\contentsline {subsubsection}{ι\sphinxhyphen {}reduction}{17}{subsubsection*.169}%
\contentsline {subsubsection}{δ\sphinxhyphen {}reduction}{17}{subsubsection*.170}%
\contentsline {subsubsection}{ζ\sphinxhyphen {}reduction}{17}{subsubsection*.173}%
\contentsline {subsubsection}{η\sphinxhyphen {}expansion}{17}{subsubsection*.175}%
\contentsline {subsubsection}{Proof Irrelevance}{18}{subsubsection*.176}%
\contentsline {subsubsection}{Convertibility}{18}{subsubsection*.177}%
\contentsline {subsection}{\numberline {2.1.6}Typing rules}{19}{subsection.2.1.6}%
\contentsline {subsubsection}{The terms}{19}{subsubsection*.178}%
\contentsline {subsubsection}{Typing rules}{20}{subsubsection*.182}%
\contentsline {subsubsection}{Subtyping rules}{22}{subsubsection*.204}%
\contentsline {subsubsection}{Admissible rules for global environments}{23}{subsubsection*.207}%
\contentsline {subsubsection}{The Calculus of Inductive Constructions with impredicative Set}{24}{subsubsection*.216}%
\contentsline {subsection}{\numberline {2.1.7}Variants and the \sphinxstyleliteralintitle {\sphinxupquote {match}} construct}{25}{subsection.2.1.7}%
\contentsline {subsubsection}{Variants}{25}{subsubsection*.220}%
\contentsline {paragraph}{Private (matching) inductive types}{25}{paragraph*.225}%
\contentsline {subsubsection}{Definition by cases: match}{26}{subsubsection*.227}%
\contentsline {subsection}{\numberline {2.1.8}Record types}{28}{subsection.2.1.8}%
\contentsline {subsubsection}{Primitive Projections}{32}{subsubsection*.265}%
\contentsline {paragraph}{Primitive Record Types}{32}{paragraph*.268}%
\contentsline {paragraph}{Reduction}{32}{paragraph*.269}%
\contentsline {paragraph}{Compatibility Projections and \sphinxstyleliteralintitle {\sphinxupquote {match}}}{33}{paragraph*.270}%
\contentsline {subsection}{\numberline {2.1.9}Inductive types and recursive functions}{33}{subsection.2.1.9}%
\contentsline {subsubsection}{Inductive types}{33}{subsubsection*.271}%
\contentsline {paragraph}{Simple inductive types}{34}{paragraph*.281}%
\contentsline {paragraph}{Simple annotated inductive types}{35}{paragraph*.282}%
\contentsline {paragraph}{Parameterized inductive types}{35}{paragraph*.283}%
\contentsline {paragraph}{Mutually defined inductive types}{38}{paragraph*.285}%
\contentsline {subsubsection}{Recursive functions: fix}{39}{subsubsection*.286}%
\contentsline {subsubsection}{Top\sphinxhyphen {}level recursive functions}{39}{subsubsection*.293}%
\contentsline {subsubsection}{Theory of inductive definitions}{42}{subsubsection*.298}%
\contentsline {paragraph}{Types of inductive objects}{43}{paragraph*.299}%
\contentsline {paragraph}{Well\sphinxhyphen {}formed inductive definitions}{43}{paragraph*.302}%
\contentsline {subparagraph}{Arity of a given sort}{43}{subparagraph*.303}%
\contentsline {subparagraph}{Arity}{44}{subparagraph*.304}%
\contentsline {subparagraph}{Type of constructor}{44}{subparagraph*.305}%
\contentsline {subparagraph}{Positivity Condition}{44}{subparagraph*.306}%
\contentsline {subparagraph}{Strict positivity}{44}{subparagraph*.307}%
\contentsline {subparagraph}{Nested Positivity}{45}{subparagraph*.308}%
\contentsline {subparagraph}{Correctness rules}{45}{subparagraph*.309}%
\contentsline {subparagraph}{Template polymorphism}{48}{subparagraph*.311}%
\contentsline {paragraph}{Destructors}{51}{paragraph*.319}%
\contentsline {subparagraph}{The match ... with ... end construction}{52}{subparagraph*.320}%
\contentsline {paragraph}{Fixpoint definitions}{56}{paragraph*.334}%
\contentsline {subparagraph}{Typing rule}{56}{subparagraph*.335}%
\contentsline {subparagraph}{Reduction rule}{58}{subparagraph*.337}%
\contentsline {subsection}{\numberline {2.1.10}Co\sphinxhyphen {}inductive types and co\sphinxhyphen {}recursive functions}{58}{subsection.2.1.10}%
\contentsline {subsubsection}{Co\sphinxhyphen {}inductive types}{58}{subsubsection*.339}%
\contentsline {paragraph}{Caveat}{59}{paragraph*.341}%
\contentsline {subsubsection}{Co\sphinxhyphen {}recursive functions: cofix}{60}{subsubsection*.342}%
\contentsline {subsubsection}{Top\sphinxhyphen {}level definitions of co\sphinxhyphen {}recursive functions}{60}{subsubsection*.347}%
\contentsline {subsection}{\numberline {2.1.11}Section mechanism}{61}{subsection.2.1.11}%
\contentsline {subsection}{\numberline {2.1.12}The Module System}{63}{subsection.2.1.12}%
\contentsline {subsubsection}{Modules and module types}{63}{subsubsection*.359}%
\contentsline {subsubsection}{Using modules}{64}{subsubsection*.360}%
\contentsline {paragraph}{Examples}{68}{paragraph*.395}%
\contentsline {subsubsection}{Typing Modules}{70}{subsubsection*.398}%
\contentsline {subsubsection}{Libraries and qualified names}{74}{subsubsection*.440}%
\contentsline {paragraph}{Names of libraries}{74}{paragraph*.441}%
\contentsline {subsubsection}{Qualified identifiers}{75}{subsubsection*.442}%
\contentsline {paragraph}{Libraries and filesystem}{76}{paragraph*.447}%
\contentsline {subsection}{\numberline {2.1.13}Primitive objects}{77}{subsection.2.1.13}%
\contentsline {subsubsection}{Primitive Integers}{77}{subsubsection*.448}%
\contentsline {subsubsection}{Primitive Floats}{77}{subsubsection*.449}%
\contentsline {subsection}{\numberline {2.1.14}Polymorphic Universes}{78}{subsection.2.1.14}%
\contentsline {subsubsection}{General Presentation}{78}{subsubsection*.450}%
\contentsline {subsubsection}{Polymorphic, Monomorphic}{80}{subsubsection*.451}%
\contentsline {subsubsection}{Cumulative, NonCumulative}{80}{subsubsection*.455}%
\contentsline {paragraph}{An example of a proof using cumulativity}{82}{paragraph*.460}%
\contentsline {subsubsection}{Cumulativity Weak Constraints}{82}{subsubsection*.461}%
\contentsline {subsubsection}{Global and local universes}{82}{subsubsection*.463}%
\contentsline {subsubsection}{Conversion and unification}{82}{subsubsection*.464}%
\contentsline {subsubsection}{Minimization}{83}{subsubsection*.465}%
\contentsline {subsubsection}{Explicit Universes}{83}{subsubsection*.467}%
\contentsline {subsubsection}{Printing universes}{84}{subsubsection*.486}%
\contentsline {paragraph}{Polymorphic definitions}{84}{paragraph*.489}%
\contentsline {subsubsection}{Universe polymorphism and sections}{87}{subsubsection*.492}%
\contentsline {subsection}{\numberline {2.1.15}SProp (proof irrelevant propositions)}{88}{subsection.2.1.15}%
\contentsline {subsubsection}{Basic constructs}{88}{subsubsection*.495}%
\contentsline {subsubsection}{Encodings for strict propositions}{91}{subsubsection*.496}%
\contentsline {subsubsection}{Issues with non\sphinxhyphen {}cumulativity}{91}{subsubsection*.497}%
\contentsline {section}{\numberline {2.2}Language extensions}{92}{section.2.2}%
\contentsline {subsection}{\numberline {2.2.1}Existential variables}{92}{subsection.2.2.1}%
\contentsline {subsubsection}{Inferable subterms}{94}{subsubsection*.503}%
\contentsline {subsubsection}{Explicit displaying of existential instances for pretty\sphinxhyphen {}printing}{94}{subsubsection*.504}%
\contentsline {subsubsection}{Solving existential variables using tactics}{94}{subsubsection*.506}%
\contentsline {subsection}{\numberline {2.2.2}Implicit arguments}{94}{subsection.2.2.2}%
\contentsline {subsubsection}{The different kinds of implicit arguments}{94}{subsubsection*.507}%
\contentsline {paragraph}{Implicit arguments inferable from the knowledge of other arguments of a function}{94}{paragraph*.508}%
\contentsline {paragraph}{Implicit arguments inferable by resolution}{95}{paragraph*.509}%
\contentsline {subsubsection}{Maximal and non\sphinxhyphen {}maximal insertion of implicit arguments}{96}{subsubsection*.510}%
\contentsline {paragraph}{Trailing Implicit Arguments}{96}{paragraph*.511}%
\contentsline {subsubsection}{Casual use of implicit arguments}{96}{subsubsection*.513}%
\contentsline {subsubsection}{Declaration of implicit arguments}{96}{subsubsection*.515}%
\contentsline {paragraph}{Implicit Argument Binders}{96}{paragraph*.516}%
\contentsline {paragraph}{Mode for automatic declaration of implicit arguments}{99}{paragraph*.521}%
\contentsline {paragraph}{Controlling strict implicit arguments}{99}{paragraph*.523}%
\contentsline {paragraph}{Controlling contextual implicit arguments}{99}{paragraph*.526}%
\contentsline {paragraph}{Controlling reversible\sphinxhyphen {}pattern implicit arguments}{99}{paragraph*.528}%
\contentsline {paragraph}{Controlling the insertion of implicit arguments not followed by explicit arguments}{99}{paragraph*.530}%
\contentsline {paragraph}{Combining manual declaration and automatic declaration}{99}{paragraph*.532}%
\contentsline {subsubsection}{Explicit applications}{100}{subsubsection*.533}%
\contentsline {subsubsection}{Displaying implicit arguments}{101}{subsubsection*.534}%
\contentsline {subsubsection}{Displaying implicit arguments when pretty\sphinxhyphen {}printing}{101}{subsubsection*.536}%
\contentsline {subsubsection}{Interaction with subtyping}{101}{subsubsection*.539}%
\contentsline {subsubsection}{Deactivation of implicit arguments for parsing}{102}{subsubsection*.540}%
\contentsline {subsubsection}{Implicit types of variables}{103}{subsubsection*.544}%
\contentsline {subsubsection}{Implicit generalization}{104}{subsubsection*.552}%
\contentsline {subsection}{\numberline {2.2.3}Extended pattern matching}{106}{subsection.2.2.3}%
\contentsline {subsubsection}{Variants and extensions of \sphinxstyleliteralintitle {\sphinxupquote {match}}}{106}{subsubsection*.560}%
\contentsline {paragraph}{Multiple and nested pattern matching}{106}{paragraph*.561}%
\contentsline {paragraph}{Pattern\sphinxhyphen {}matching on boolean values: the if expression}{106}{paragraph*.562}%
\contentsline {paragraph}{Irrefutable patterns: the destructuring let variants}{107}{paragraph*.565}%
\contentsline {subparagraph}{First destructuring let syntax}{107}{subparagraph*.566}%
\contentsline {subparagraph}{Second destructuring let syntax}{108}{subparagraph*.567}%
\contentsline {paragraph}{Controlling pretty\sphinxhyphen {}printing of match expressions}{108}{paragraph*.568}%
\contentsline {subparagraph}{Printing nested patterns}{108}{subparagraph*.569}%
\contentsline {subparagraph}{Factorization of clauses with same right\sphinxhyphen {}hand side}{108}{subparagraph*.571}%
\contentsline {subparagraph}{Use of a default clause}{109}{subparagraph*.573}%
\contentsline {subparagraph}{Printing of wildcard patterns}{109}{subparagraph*.575}%
\contentsline {subparagraph}{Printing of the elimination predicate}{109}{subparagraph*.577}%
\contentsline {subparagraph}{Printing matching on irrefutable patterns}{109}{subparagraph*.579}%
\contentsline {subparagraph}{Printing matching on booleans}{109}{subparagraph*.581}%
\contentsline {subsubsection}{Patterns}{110}{subsubsection*.583}%
\contentsline {subsubsection}{Multiple patterns}{111}{subsubsection*.584}%
\contentsline {subsubsection}{Aliasing subpatterns}{111}{subsubsection*.585}%
\contentsline {subsubsection}{Nested patterns}{112}{subsubsection*.586}%
\contentsline {subsubsection}{Disjunctive patterns}{113}{subsubsection*.587}%
\contentsline {subsubsection}{About patterns of parametric types}{113}{subsubsection*.588}%
\contentsline {paragraph}{Parameters in patterns}{113}{paragraph*.589}%
\contentsline {subsubsection}{Implicit arguments in patterns}{114}{subsubsection*.591}%
\contentsline {subsubsection}{Matching objects of dependent types}{115}{subsubsection*.592}%
\contentsline {subsubsection}{Understanding dependencies in patterns}{115}{subsubsection*.593}%
\contentsline {subsubsection}{When the elimination predicate must be provided}{115}{subsubsection*.594}%
\contentsline {paragraph}{Dependent pattern matching}{115}{paragraph*.595}%
\contentsline {paragraph}{Multiple dependent pattern matching}{116}{paragraph*.596}%
\contentsline {paragraph}{Patterns in \sphinxstyleliteralintitle {\sphinxupquote {in}}}{116}{paragraph*.597}%
\contentsline {subsubsection}{Using pattern matching to write proofs}{117}{subsubsection*.598}%
\contentsline {subsubsection}{Pattern\sphinxhyphen {}matching on inductive objects involving local definitions}{117}{subsubsection*.599}%
\contentsline {subsubsection}{Pattern\sphinxhyphen {}matching and coercions}{118}{subsubsection*.600}%
\contentsline {subsubsection}{When does the expansion strategy fail?}{119}{subsubsection*.601}%
\contentsline {subsection}{\numberline {2.2.4}Syntax extensions and notation scopes}{119}{subsection.2.2.4}%
\contentsline {subsubsection}{Notations}{119}{subsubsection*.607}%
\contentsline {paragraph}{Basic notations}{119}{paragraph*.608}%
\contentsline {paragraph}{Precedences and associativity}{120}{paragraph*.610}%
\contentsline {paragraph}{Complex notations}{121}{paragraph*.611}%
\contentsline {paragraph}{Simple factorization rules}{121}{paragraph*.612}%
\contentsline {paragraph}{Displaying symbolic notations}{122}{paragraph*.613}%
\contentsline {paragraph}{The Infix command}{123}{paragraph*.614}%
\contentsline {paragraph}{Reserving notations}{124}{paragraph*.616}%
\contentsline {paragraph}{Simultaneous definition of terms and notations}{124}{paragraph*.619}%
\contentsline {paragraph}{Displaying information about notations}{125}{paragraph*.624}%
\contentsline {paragraph}{Locating notations}{125}{paragraph*.628}%
\contentsline {paragraph}{Inheritance of the properties of arguments of constants bound to a notation}{126}{paragraph*.629}%
\contentsline {paragraph}{Notations and binders}{126}{paragraph*.630}%
\contentsline {subparagraph}{Binders bound in the notation and parsed as identifiers}{126}{subparagraph*.631}%
\contentsline {subparagraph}{Binders bound in the notation and parsed as patterns}{126}{subparagraph*.632}%
\contentsline {subparagraph}{Binders bound in the notation and parsed as terms}{127}{subparagraph*.633}%
\contentsline {subparagraph}{Binders not bound in the notation}{128}{subparagraph*.634}%
\contentsline {subparagraph}{Notations with expressions used both as binder and term}{128}{subparagraph*.635}%
\contentsline {paragraph}{Notations with recursive patterns}{128}{paragraph*.636}%
\contentsline {paragraph}{Notations with recursive patterns involving binders}{129}{paragraph*.637}%
\contentsline {paragraph}{Predefined entries}{130}{paragraph*.638}%
\contentsline {paragraph}{Custom entries}{130}{paragraph*.639}%
\contentsline {paragraph}{Syntax}{133}{paragraph*.642}%
\contentsline {subsubsection}{Notation scopes}{134}{subsubsection*.652}%
\contentsline {paragraph}{Global interpretation rules for notations}{134}{paragraph*.660}%
\contentsline {paragraph}{Local interpretation rules for notations}{135}{paragraph*.663}%
\contentsline {subparagraph}{Opening a notation scope locally}{135}{subparagraph*.664}%
\contentsline {subparagraph}{Binding types or coercion classes to a notation scope}{135}{subparagraph*.669}%
\contentsline {paragraph}{The \sphinxstyleliteralintitle {\sphinxupquote {type\_scope}} notation scope}{136}{paragraph*.671}%
\contentsline {paragraph}{The \sphinxstyleliteralintitle {\sphinxupquote {function\_scope}} notation scope}{136}{paragraph*.672}%
\contentsline {paragraph}{Notation scopes used in the standard library of Coq}{136}{paragraph*.673}%
\contentsline {paragraph}{Displaying information about scopes}{137}{paragraph*.674}%
\contentsline {subsubsection}{Abbreviations}{138}{subsubsection*.678}%
\contentsline {subsubsection}{Numerals and strings}{139}{subsubsection*.680}%
\contentsline {paragraph}{Numeral notations}{139}{paragraph*.683}%
\contentsline {paragraph}{String notations}{141}{paragraph*.695}%
\contentsline {subsubsection}{Tactic Notations}{142}{subsubsection*.707}%
\contentsline {subsection}{\numberline {2.2.5}Setting properties of a function's arguments}{144}{subsection.2.2.5}%
\contentsline {subsubsection}{Manual declaration of implicit arguments}{146}{subsubsection*.723}%
\contentsline {subsubsection}{Automatic declaration of implicit arguments}{147}{subsubsection*.725}%
\contentsline {subsubsection}{Renaming implicit arguments}{148}{subsubsection*.726}%
\contentsline {subsubsection}{Binding arguments to a scope}{149}{subsubsection*.727}%
\contentsline {subsubsection}{Effects of \sphinxstyleliteralintitle {\sphinxupquote {Arguments}} on unfolding}{150}{subsubsection*.728}%
\contentsline {subsubsection}{Bidirectionality hints}{151}{subsubsection*.729}%
\contentsline {subsection}{\numberline {2.2.6}Implicit Coercions}{151}{subsection.2.2.6}%
\contentsline {subsubsection}{General Presentation}{152}{subsubsection*.730}%
\contentsline {subsubsection}{Classes}{152}{subsubsection*.731}%
\contentsline {subsubsection}{Coercions}{152}{subsubsection*.734}%
\contentsline {subsubsection}{Identity Coercions}{153}{subsubsection*.735}%
\contentsline {subsubsection}{Inheritance Graph}{153}{subsubsection*.736}%
\contentsline {subsubsection}{Declaring Coercions}{153}{subsubsection*.737}%
\contentsline {subsubsection}{Displaying Available Coercions}{154}{subsubsection*.752}%
\contentsline {subsubsection}{Activating the Printing of Coercions}{155}{subsubsection*.757}%
\contentsline {subsubsection}{Classes as Records}{155}{subsubsection*.760}%
\contentsline {subsubsection}{Coercions and Sections}{155}{subsubsection*.761}%
\contentsline {subsubsection}{Coercions and Modules}{155}{subsubsection*.762}%
\contentsline {subsubsection}{Examples}{155}{subsubsection*.763}%
\contentsline {paragraph}{Coercion at function application}{155}{paragraph*.764}%
\contentsline {paragraph}{Coercion to a type}{158}{paragraph*.765}%
\contentsline {paragraph}{Coercion to a function}{159}{paragraph*.766}%
\contentsline {subsection}{\numberline {2.2.7}Typeclasses}{159}{subsection.2.2.7}%
\contentsline {subsubsection}{Class and Instance declarations}{160}{subsubsection*.767}%
\contentsline {subsubsection}{Binding classes}{161}{subsubsection*.768}%
\contentsline {subsubsection}{Parameterized Instances}{161}{subsubsection*.769}%
\contentsline {subsubsection}{Sections and contexts}{162}{subsubsection*.770}%
\contentsline {subsubsection}{Building hierarchies}{162}{subsubsection*.771}%
\contentsline {paragraph}{Superclasses}{162}{paragraph*.772}%
\contentsline {paragraph}{Substructures}{163}{paragraph*.773}%
\contentsline {subsubsection}{Summary of the commands}{164}{subsubsection*.775}%
\contentsline {paragraph}{Typeclasses Transparent, Typeclasses Opaque}{166}{paragraph*.785}%
\contentsline {paragraph}{Settings}{166}{paragraph*.788}%
\contentsline {paragraph}{Typeclasses eauto \sphinxstyleliteralintitle {\sphinxupquote {:=}}}{167}{paragraph*.800}%
\contentsline {subsection}{\numberline {2.2.8}Canonical Structures}{168}{subsection.2.2.8}%
\contentsline {subsubsection}{Declaration of canonical structures}{168}{subsubsection*.802}%
\contentsline {subsubsection}{Notation overloading}{170}{subsubsection*.808}%
\contentsline {paragraph}{Derived Canonical Structures}{171}{paragraph*.809}%
\contentsline {subsubsection}{Hierarchy of structures}{172}{subsubsection*.810}%
\contentsline {paragraph}{Compact declaration of Canonical Structures}{178}{paragraph*.811}%
\contentsline {subsection}{\numberline {2.2.9}Program}{180}{subsection.2.2.9}%
\contentsline {subsubsection}{Elaborating programs}{180}{subsubsection*.812}%
\contentsline {paragraph}{Syntactic control over equalities}{181}{paragraph*.817}%
\contentsline {paragraph}{Program Definition}{182}{paragraph*.818}%
\contentsline {paragraph}{Program Fixpoint}{182}{paragraph*.822}%
\contentsline {paragraph}{Program Lemma}{183}{paragraph*.825}%
\contentsline {subsubsection}{Solving obligations}{183}{subsubsection*.827}%
\contentsline {subsubsection}{Frequently Asked Questions}{184}{subsubsection*.839}%
\contentsline {subsection}{\numberline {2.2.10}Vernacular commands}{185}{subsection.2.2.10}%
\contentsline {subsubsection}{Displaying}{185}{subsubsection*.841}%
\contentsline {subsubsection}{Query commands}{185}{subsubsection*.852}%
\contentsline {subsubsection}{Requests to the environment}{193}{subsubsection*.878}%
\contentsline {subsubsection}{Printing flags}{194}{subsubsection*.891}%
\contentsline {subsubsection}{Loading files}{194}{subsubsection*.893}%
\contentsline {subsubsection}{Compiled files}{195}{subsubsection*.898}%
\contentsline {subsubsection}{Loadpath}{196}{subsubsection*.913}%
\contentsline {subsubsection}{Backtracking}{197}{subsubsection*.924}%
\contentsline {subsubsection}{Quitting and debugging}{197}{subsubsection*.931}%
\contentsline {subsubsection}{Controlling display}{198}{subsubsection*.941}%
\contentsline {subsubsection}{Printing constructions in full}{199}{subsubsection*.949}%
\contentsline {subsubsection}{Controlling the reduction strategies and the conversion algorithm}{199}{subsubsection*.951}%
\contentsline {subsubsection}{Controlling the locality of commands}{201}{subsubsection*.965}%
\contentsline {subsubsection}{Controlling Typing Flags}{202}{subsubsection*.969}%
\contentsline {subsubsection}{Internal registration commands}{203}{subsubsection*.974}%
\contentsline {paragraph}{Exposing constants to OCaml libraries}{203}{paragraph*.975}%
\contentsline {paragraph}{Inlining hints for the fast reduction machines}{203}{paragraph*.977}%
\contentsline {paragraph}{Registering primitive operations}{204}{paragraph*.979}%
\contentsline {chapter}{\numberline {3}Proofs}{205}{chapter.3}%
\contentsline {section}{\numberline {3.1}Writing proofs}{205}{section.3.1}%
\contentsline {subsection}{\numberline {3.1.1}Proof handling}{205}{subsection.3.1.1}%
\contentsline {subsubsection}{Entering and leaving proof editing mode}{206}{subsubsection*.983}%
\contentsline {paragraph}{Proof using options}{208}{paragraph*.995}%
\contentsline {paragraph}{Name a set of section hypotheses for \sphinxstyleliteralintitle {\sphinxupquote {Proof using}}}{208}{paragraph*.998}%
\contentsline {paragraph}{Proof modes}{209}{paragraph*.1002}%
\contentsline {subsubsection}{Navigation in the proof tree}{209}{subsubsection*.1004}%
\contentsline {paragraph}{Bullets}{212}{paragraph*.1016}%
\contentsline {paragraph}{Mandatory Bullets}{216}{paragraph*.1022}%
\contentsline {paragraph}{Set Bullet Behavior}{216}{paragraph*.1023}%
\contentsline {subsubsection}{Requesting information}{216}{subsubsection*.1025}%
\contentsline {subsubsection}{Showing differences between proof steps}{218}{subsubsection*.1038}%
\contentsline {paragraph}{How to enable diffs}{218}{paragraph*.1039}%
\contentsline {paragraph}{How diffs are calculated}{219}{paragraph*.1041}%
\contentsline {subsubsection}{Controlling the effect of proof editing commands}{219}{subsubsection*.1042}%
\contentsline {subsubsection}{Controlling memory usage}{220}{subsubsection*.1045}%
\contentsline {subsection}{\numberline {3.1.2}Tactics}{220}{subsection.3.1.2}%
\contentsline {subsubsection}{Common elements of tactics}{220}{subsubsection*.1048}%
\contentsline {paragraph}{Reserved keywords}{220}{paragraph*.1049}%
\contentsline {paragraph}{Invocation of tactics}{221}{paragraph*.1050}%
\contentsline {paragraph}{Bindings list}{221}{paragraph*.1054}%
\contentsline {paragraph}{Intro patterns}{222}{paragraph*.1060}%
\contentsline {paragraph}{Occurrence sets and occurrence clauses}{228}{paragraph*.1081}%
\contentsline {subsubsection}{Applying theorems}{229}{subsubsection*.1086}%
\contentsline {subsubsection}{Managing the local context}{236}{subsubsection*.1134}%
\contentsline {subsubsection}{Controlling the proof flow}{242}{subsubsection*.1174}%
\contentsline {subsubsection}{Case analysis and induction}{246}{subsubsection*.1199}%
\contentsline {subsubsection}{Rewriting expressions}{262}{subsubsection*.1244}%
\contentsline {subsubsection}{Performing computations}{266}{subsubsection*.1266}%
\contentsline {paragraph}{Conversion tactics applied to hypotheses}{275}{paragraph*.1310}%
\contentsline {subsubsection}{Automation}{275}{subsubsection*.1312}%
\contentsline {subsubsection}{Controlling automation}{278}{subsubsection*.1330}%
\contentsline {paragraph}{The hints databases for auto and eauto}{278}{paragraph*.1331}%
\contentsline {subparagraph}{Creating Hint databases}{278}{subparagraph*.1333}%
\contentsline {paragraph}{Hint databases defined in the Coq standard library}{282}{paragraph*.1352}%
\contentsline {paragraph}{Hint locality}{283}{paragraph*.1366}%
\contentsline {paragraph}{Setting implicit automation tactics}{283}{paragraph*.1368}%
\contentsline {subsubsection}{Decision procedures}{284}{subsubsection*.1370}%
\contentsline {subsubsection}{Checking properties of terms}{288}{subsubsection*.1386}%
\contentsline {subsubsection}{Equality}{289}{subsubsection*.1401}%
\contentsline {subsubsection}{Equality and inductive sets}{289}{subsubsection*.1408}%
\contentsline {subsubsection}{Classical tactics}{290}{subsubsection*.1416}%
\contentsline {subsubsection}{Automating}{290}{subsubsection*.1419}%
\contentsline {subsubsection}{Non\sphinxhyphen {}logical tactics}{292}{subsubsection*.1424}%
\contentsline {subsubsection}{Delaying solving unification constraints}{295}{subsubsection*.1433}%
\contentsline {subsubsection}{Proof maintenance}{295}{subsubsection*.1436}%
\contentsline {subsubsection}{Performance\sphinxhyphen {}oriented tactic variants}{296}{subsubsection*.1439}%
\contentsline {subsection}{\numberline {3.1.3}The SSReflect proof language}{298}{subsection.3.1.3}%
\contentsline {subsubsection}{Introduction}{298}{subsubsection*.1445}%
\contentsline {paragraph}{Acknowledgments}{299}{paragraph*.1446}%
\contentsline {subsubsection}{Usage}{299}{subsubsection*.1447}%
\contentsline {paragraph}{Getting started}{299}{paragraph*.1448}%
\contentsline {paragraph}{Compatibility issues}{300}{paragraph*.1449}%
\contentsline {subsubsection}{Gallina extensions}{301}{subsubsection*.1452}%
\contentsline {paragraph}{Pattern assignment}{301}{paragraph*.1453}%
\contentsline {paragraph}{Pattern conditional}{302}{paragraph*.1458}%
\contentsline {paragraph}{Parametric polymorphism}{303}{paragraph*.1465}%
\contentsline {paragraph}{Anonymous arguments}{304}{paragraph*.1467}%
\contentsline {paragraph}{Wildcards}{304}{paragraph*.1470}%
\contentsline {paragraph}{Definitions}{304}{paragraph*.1471}%
\contentsline {paragraph}{Abbreviations}{306}{paragraph*.1473}%
\contentsline {subparagraph}{Matching}{307}{subparagraph*.1477}%
\contentsline {subparagraph}{Occurrence selection}{309}{subparagraph*.1478}%
\contentsline {paragraph}{Basic localization}{311}{paragraph*.1479}%
\contentsline {subsubsection}{Basic tactics}{312}{subsubsection*.1480}%
\contentsline {paragraph}{Bookkeeping}{312}{paragraph*.1481}%
\contentsline {paragraph}{The defective tactics}{315}{paragraph*.1482}%
\contentsline {subparagraph}{The move tactic.}{315}{subparagraph*.1483}%
\contentsline {subparagraph}{The case tactic}{316}{subparagraph*.1485}%
\contentsline {subparagraph}{The elim tactic}{316}{subparagraph*.1487}%
\contentsline {subparagraph}{The apply tactic}{317}{subparagraph*.1489}%
\contentsline {paragraph}{Discharge}{318}{paragraph*.1491}%
\contentsline {subparagraph}{Clear rules}{319}{subparagraph*.1497}%
\contentsline {subparagraph}{Matching for apply and exact}{319}{subparagraph*.1498}%
\contentsline {subparagraph}{The abstract tactic}{320}{subparagraph*.1499}%
\contentsline {paragraph}{Introduction in the context}{321}{paragraph*.1501}%
\contentsline {subparagraph}{Simplification items}{321}{subparagraph*.1513}%
\contentsline {subparagraph}{Views}{322}{subparagraph*.1514}%
\contentsline {subparagraph}{Intro patterns}{322}{subparagraph*.1515}%
\contentsline {subparagraph}{Clear switch}{323}{subparagraph*.1516}%
\contentsline {subparagraph}{Branching and destructuring}{324}{subparagraph*.1517}%
\contentsline {subparagraph}{Block introduction}{324}{subparagraph*.1518}%
\contentsline {paragraph}{Generation of equations}{325}{paragraph*.1519}%
\contentsline {paragraph}{Type families}{326}{paragraph*.1520}%
\contentsline {subsubsection}{Control flow}{329}{subsubsection*.1521}%
\contentsline {paragraph}{Indentation and bullets}{329}{paragraph*.1522}%
\contentsline {paragraph}{Terminators}{330}{paragraph*.1523}%
\contentsline {paragraph}{Selectors}{331}{paragraph*.1526}%
\contentsline {paragraph}{Iteration}{333}{paragraph*.1532}%
\contentsline {paragraph}{Localization}{333}{paragraph*.1536}%
\contentsline {paragraph}{Structure}{334}{paragraph*.1538}%
\contentsline {subparagraph}{The have tactic.}{335}{subparagraph*.1539}%
\contentsline {subparagraph}{Generating let in context entries with have}{338}{subparagraph*.1542}%
\contentsline {subparagraph}{The have tactic and typeclass resolution}{341}{subparagraph*.1543}%
\contentsline {subparagraph}{Variants: the suff and wlog tactics}{342}{subparagraph*.1545}%
\contentsline {subparagraph}{Advanced generalization}{344}{subparagraph*.1548}%
\contentsline {subsubsection}{Rewriting}{345}{subsubsection*.1549}%
\contentsline {paragraph}{An extended rewrite tactic}{345}{paragraph*.1550}%
\contentsline {paragraph}{Remarks and examples}{348}{paragraph*.1561}%
\contentsline {subparagraph}{Rewrite redex selection}{348}{subparagraph*.1562}%
\contentsline {subparagraph}{Chained rewrite steps}{348}{subparagraph*.1563}%
\contentsline {subparagraph}{Explicit redex switches are matched first}{349}{subparagraph*.1564}%
\contentsline {subparagraph}{Occurrence switches and redex switches}{350}{subparagraph*.1565}%
\contentsline {subparagraph}{Occurrence selection and repetition}{351}{subparagraph*.1566}%
\contentsline {subparagraph}{Multi\sphinxhyphen {}rule rewriting}{351}{subparagraph*.1567}%
\contentsline {subparagraph}{Wildcards vs abstractions}{354}{subparagraph*.1568}%
\contentsline {subparagraph}{When SSReflect rewrite fails on standard Coq licit rewrite}{355}{subparagraph*.1569}%
\contentsline {subparagraph}{Existential metavariables and rewriting}{357}{subparagraph*.1570}%
\contentsline {paragraph}{Rewriting under binders}{358}{paragraph*.1571}%
\contentsline {subparagraph}{The under tactic}{359}{subparagraph*.1572}%
\contentsline {subparagraph}{Interactive mode}{360}{subparagraph*.1575}%
\contentsline {subparagraph}{The over tactic}{361}{subparagraph*.1576}%
\contentsline {subparagraph}{One\sphinxhyphen {}liner mode}{361}{subparagraph*.1578}%
\contentsline {paragraph}{Locking, unlocking}{363}{paragraph*.1579}%
\contentsline {paragraph}{Congruence}{365}{paragraph*.1581}%
\contentsline {subsubsection}{Contextual patterns}{367}{subsubsection*.1583}%
\contentsline {paragraph}{Syntax}{367}{paragraph*.1584}%
\contentsline {paragraph}{Matching contextual patterns}{368}{paragraph*.1585}%
\contentsline {paragraph}{Examples}{369}{paragraph*.1586}%
\contentsline {subparagraph}{Contextual pattern in set and the : tactical}{369}{subparagraph*.1587}%
\contentsline {subparagraph}{Contextual patterns in rewrite}{370}{subparagraph*.1588}%
\contentsline {paragraph}{Patterns for recurrent contexts}{371}{paragraph*.1589}%
\contentsline {subsubsection}{Views and reflection}{371}{subsubsection*.1590}%
\contentsline {paragraph}{Interpreting eliminations}{372}{paragraph*.1591}%
\contentsline {paragraph}{Interpreting assumptions}{375}{paragraph*.1592}%
\contentsline {subparagraph}{Specializing assumptions}{378}{subparagraph*.1593}%
\contentsline {paragraph}{Interpreting goals}{379}{paragraph*.1594}%
\contentsline {paragraph}{Boolean reflection}{380}{paragraph*.1595}%
\contentsline {paragraph}{The reflect predicate}{381}{paragraph*.1596}%
\contentsline {paragraph}{General mechanism for interpreting goals and assumptions}{383}{paragraph*.1597}%
\contentsline {subparagraph}{Specializing assumptions}{383}{subparagraph*.1598}%
\contentsline {subparagraph}{Interpreting assumptions}{383}{subparagraph*.1599}%
\contentsline {paragraph}{Interpreting equivalences}{385}{paragraph*.1600}%
\contentsline {paragraph}{Declaring new Hint Views}{386}{paragraph*.1601}%
\contentsline {paragraph}{Multiple views}{387}{paragraph*.1604}%
\contentsline {subsubsection}{SSReflect searching tool}{388}{subsubsection*.1605}%
\contentsline {subsubsection}{Synopsis and Index}{389}{subsubsection*.1607}%
\contentsline {paragraph}{Parameters}{389}{paragraph*.1608}%
\contentsline {paragraph}{Items and switches}{390}{paragraph*.1617}%
\contentsline {paragraph}{Tactics}{391}{paragraph*.1654}%
\contentsline {paragraph}{Tacticals}{393}{paragraph*.1669}%
\contentsline {paragraph}{Commands}{393}{paragraph*.1684}%
\contentsline {paragraph}{Settings}{394}{paragraph*.1688}%
\contentsline {subsection}{\numberline {3.1.4}Detailed examples of tactics}{394}{subsection.3.1.4}%
\contentsline {subsubsection}{dependent induction}{394}{subsubsection*.1691}%
\contentsline {paragraph}{A larger example}{396}{paragraph*.1692}%
\contentsline {subsubsection}{autorewrite}{399}{subsubsection*.1693}%
\contentsline {subsection}{\numberline {3.1.5}Proof schemes}{401}{subsection.3.1.5}%
\contentsline {subsubsection}{Generation of induction principles with \sphinxstyleliteralintitle {\sphinxupquote {Scheme}}}{401}{subsubsection*.1694}%
\contentsline {paragraph}{Automatic declaration of schemes}{403}{paragraph*.1697}%
\contentsline {paragraph}{Combined Scheme}{403}{paragraph*.1704}%
\contentsline {subsubsection}{Generation of inversion principles with \sphinxstyleliteralintitle {\sphinxupquote {Derive}} \sphinxstyleliteralintitle {\sphinxupquote {Inversion}}}{404}{subsubsection*.1706}%
\contentsline {section}{\numberline {3.2}Built\sphinxhyphen {}in decision procedures and programmable tactics}{406}{section.3.2}%
\contentsline {subsection}{\numberline {3.2.1}Omega: a solver for quantifier\sphinxhyphen {}free problems in Presburger Arithmetic}{406}{subsection.3.2.1}%
\contentsline {subsubsection}{Description of \sphinxstyleliteralintitle {\sphinxupquote {omega}}}{406}{subsubsection*.1708}%
\contentsline {subsubsection}{Arithmetical goals recognized by \sphinxstyleliteralintitle {\sphinxupquote {omega}}}{406}{subsubsection*.1710}%
\contentsline {subsubsection}{Messages from \sphinxstyleliteralintitle {\sphinxupquote {omega}}}{407}{subsubsection*.1711}%
\contentsline {subsubsection}{Using \sphinxstyleliteralintitle {\sphinxupquote {omega}}}{407}{subsubsection*.1720}%
\contentsline {subsubsection}{Options}{408}{subsubsection*.1721}%
\contentsline {subsubsection}{Technical data}{408}{subsubsection*.1726}%
\contentsline {paragraph}{Overview of the tactic}{408}{paragraph*.1727}%
\contentsline {paragraph}{Overview of the OMEGA decision procedure}{409}{paragraph*.1728}%
\contentsline {subsubsection}{Bugs}{409}{subsubsection*.1729}%
\contentsline {subsection}{\numberline {3.2.2}Micromega: tactics for solving arithmetic goals over ordered rings}{409}{subsection.3.2.2}%
\contentsline {subsubsection}{Short description of the tactics}{409}{subsubsection*.1730}%
\contentsline {subsubsection}{\sphinxstyleemphasis {Positivstellensatz} refutations}{410}{subsubsection*.1740}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {lra}}: a decision procedure for linear real and rational arithmetic}{411}{subsubsection*.1742}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {lia}}: a tactic for linear integer arithmetic}{411}{subsubsection*.1744}%
\contentsline {paragraph}{High level view of \sphinxstyleliteralintitle {\sphinxupquote {lia}}}{411}{paragraph*.1746}%
\contentsline {paragraph}{Cutting plane proofs}{411}{paragraph*.1747}%
\contentsline {paragraph}{Case split}{412}{paragraph*.1750}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {nra}}: a proof procedure for non\sphinxhyphen {}linear arithmetic}{412}{subsubsection*.1752}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {nia}}: a proof procedure for non\sphinxhyphen {}linear integer arithmetic}{412}{subsubsection*.1754}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {psatz}}: a proof procedure for non\sphinxhyphen {}linear arithmetic}{412}{subsubsection*.1756}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {zify}}: pre\sphinxhyphen {}processing of arithmetic goals}{413}{subsubsection*.1758}%
\contentsline {subsection}{\numberline {3.2.3}The ring and field tactic families}{413}{subsection.3.2.3}%
\contentsline {subsubsection}{What does this tactic do?}{413}{subsubsection*.1766}%
\contentsline {subsubsection}{The variables map}{414}{subsubsection*.1767}%
\contentsline {subsubsection}{Is it automatic?}{414}{subsubsection*.1768}%
\contentsline {subsubsection}{Concrete usage in Coq}{414}{subsubsection*.1769}%
\contentsline {subsubsection}{Adding a ring structure}{416}{subsubsection*.1777}%
\contentsline {subsubsection}{How does it work?}{419}{subsubsection*.1784}%
\contentsline {subsubsection}{Dealing with fields}{420}{subsubsection*.1785}%
\contentsline {subsubsection}{Adding a new field structure}{422}{subsubsection*.1789}%
\contentsline {subsubsection}{History of ring}{423}{subsubsection*.1793}%
\contentsline {subsubsection}{Discussion}{423}{subsubsection*.1794}%
\contentsline {subsection}{\numberline {3.2.4}Nsatz: tactics for proving equalities in integral domains}{424}{subsection.3.2.4}%
\contentsline {subsubsection}{More about \sphinxstyleliteralintitle {\sphinxupquote {nsatz}}}{424}{subsubsection*.1796}%
\contentsline {subsection}{\numberline {3.2.5}Generalized rewriting}{425}{subsection.3.2.5}%
\contentsline {subsubsection}{Introduction to generalized rewriting}{426}{subsubsection*.1797}%
\contentsline {paragraph}{Relations and morphisms}{426}{paragraph*.1798}%
\contentsline {paragraph}{Adding new relations and morphisms}{427}{paragraph*.1799}%
\contentsline {paragraph}{Rewriting and non reflexive relations}{429}{paragraph*.1803}%
\contentsline {paragraph}{Rewriting and non symmetric relations}{430}{paragraph*.1804}%
\contentsline {paragraph}{Rewriting in ambiguous setoid contexts}{431}{paragraph*.1805}%
\contentsline {subsubsection}{Commands and tactics}{431}{subsubsection*.1806}%
\contentsline {paragraph}{First class setoids and morphisms}{431}{paragraph*.1807}%
\contentsline {paragraph}{Tactics enabled on user provided relations}{432}{paragraph*.1808}%
\contentsline {paragraph}{Printing relations and morphisms}{433}{paragraph*.1814}%
\contentsline {paragraph}{Deprecated syntax and backward incompatibilities}{433}{paragraph*.1816}%
\contentsline {subsubsection}{Extensions}{433}{subsubsection*.1820}%
\contentsline {paragraph}{Rewriting under binders}{433}{paragraph*.1821}%
\contentsline {paragraph}{Subrelations}{434}{paragraph*.1822}%
\contentsline {paragraph}{Constant unfolding}{435}{paragraph*.1823}%
\contentsline {subsubsection}{Strategies for rewriting}{435}{subsubsection*.1824}%
\contentsline {paragraph}{Definitions}{435}{paragraph*.1825}%
\contentsline {paragraph}{Usage}{437}{paragraph*.1828}%
\contentsline {section}{\numberline {3.3}Creating new tactics}{437}{section.3.3}%
\contentsline {subsection}{\numberline {3.3.1}Ltac}{437}{subsection.3.3.1}%
\contentsline {subsubsection}{Syntax}{438}{subsubsection*.1833}%
\contentsline {subsubsection}{Semantics}{439}{subsubsection*.1860}%
\contentsline {paragraph}{Types of values}{439}{paragraph*.1861}%
\contentsline {paragraph}{Syntactic values}{439}{paragraph*.1862}%
\contentsline {paragraph}{Tactics in terms}{440}{paragraph*.1866}%
\contentsline {paragraph}{Substitution}{440}{paragraph*.1869}%
\contentsline {paragraph}{Sequence: ;}{441}{paragraph*.1870}%
\contentsline {paragraph}{Local application of tactics: {[}> ... {]}}{441}{paragraph*.1872}%
\contentsline {paragraph}{Goal selectors}{442}{paragraph*.1879}%
\contentsline {paragraph}{Processing multiple goals}{443}{paragraph*.1889}%
\contentsline {paragraph}{Do loop}{443}{paragraph*.1890}%
\contentsline {paragraph}{Repeat loop}{443}{paragraph*.1892}%
\contentsline {paragraph}{Catching errors: try}{444}{paragraph*.1894}%
\contentsline {paragraph}{Detecting progress}{444}{paragraph*.1896}%
\contentsline {paragraph}{Branching and backtracking}{444}{paragraph*.1899}%
\contentsline {paragraph}{Branching with backtracking: +}{445}{paragraph*.1904}%
\contentsline {paragraph}{First tactic to succeed}{446}{paragraph*.1906}%
\contentsline {paragraph}{Solving}{446}{paragraph*.1909}%
\contentsline {paragraph}{First tactic to make progress: ||}{447}{paragraph*.1911}%
\contentsline {paragraph}{Conditional branching: tryif}{447}{paragraph*.1913}%
\contentsline {paragraph}{Soft cut: once}{447}{paragraph*.1915}%
\contentsline {paragraph}{Checking for a single success: exactly\_once}{447}{paragraph*.1917}%
\contentsline {paragraph}{Checking for failure: assert\_fails}{448}{paragraph*.1920}%
\contentsline {paragraph}{Checking for success: assert\_succeeds}{448}{paragraph*.1923}%
\contentsline {paragraph}{Print/identity tactic: idtac}{448}{paragraph*.1926}%
\contentsline {paragraph}{Failing}{449}{paragraph*.1928}%
\contentsline {paragraph}{Timeout}{451}{paragraph*.1934}%
\contentsline {paragraph}{Timing a tactic}{451}{paragraph*.1936}%
\contentsline {paragraph}{Timing a tactic that evaluates to a term: time\_constr}{452}{paragraph*.1938}%
\contentsline {paragraph}{Local definitions: let}{453}{paragraph*.1942}%
\contentsline {paragraph}{Function construction and application}{453}{paragraph*.1946}%
\contentsline {paragraph}{Pattern matching on terms: match}{453}{paragraph*.1948}%
\contentsline {paragraph}{Pattern matching on goals and hypotheses: match goal}{456}{paragraph*.1966}%
\contentsline {paragraph}{Filling a term context}{459}{paragraph*.1978}%
\contentsline {paragraph}{Generating fresh hypothesis names}{460}{paragraph*.1982}%
\contentsline {paragraph}{Computing in a term: eval}{460}{paragraph*.1984}%
\contentsline {paragraph}{Getting the type of a term}{461}{paragraph*.1986}%
\contentsline {paragraph}{Manipulating untyped terms: type\_term}{461}{paragraph*.1988}%
\contentsline {paragraph}{Counting goals: numgoals}{461}{paragraph*.1990}%
\contentsline {paragraph}{Testing boolean expressions: guard}{461}{paragraph*.1992}%
\contentsline {paragraph}{Proving a subgoal as a separate lemma: abstract}{462}{paragraph*.1997}%
\contentsline {subsubsection}{Tactic toplevel definitions}{463}{subsubsection*.2001}%
\contentsline {paragraph}{Defining \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$ symbols}{463}{paragraph*.2002}%
\contentsline {paragraph}{Printing \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$ tactics}{463}{paragraph*.2006}%
\contentsline {subsubsection}{Examples of using \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$}{463}{subsubsection*.2009}%
\contentsline {paragraph}{Proof that the natural numbers have at least two elements}{463}{paragraph*.2010}%
\contentsline {paragraph}{Proving that a list is a permutation of a second list}{465}{paragraph*.2011}%
\contentsline {paragraph}{Deciding intuitionistic propositional logic}{466}{paragraph*.2012}%
\contentsline {paragraph}{Deciding type isomorphisms}{468}{paragraph*.2013}%
\contentsline {subsubsection}{Debugging \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$ tactics}{470}{subsubsection*.2014}%
\contentsline {paragraph}{Backtraces}{470}{paragraph*.2015}%
\contentsline {paragraph}{Tracing execution}{470}{paragraph*.2017}%
\contentsline {paragraph}{Interactive debugger}{471}{paragraph*.2020}%
\contentsline {paragraph}{Profiling \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$ tactics}{471}{paragraph*.2024}%
\contentsline {paragraph}{Run\sphinxhyphen {}time optimization tactic}{473}{paragraph*.2033}%
\contentsline {subsection}{\numberline {3.3.2}Ltac2}{474}{subsection.3.3.2}%
\contentsline {subsubsection}{General design}{474}{subsubsection*.2036}%
\contentsline {subsubsection}{ML component}{474}{subsubsection*.2037}%
\contentsline {paragraph}{Overview}{474}{paragraph*.2038}%
\contentsline {paragraph}{Type Syntax}{475}{paragraph*.2039}%
\contentsline {paragraph}{Type declarations}{476}{paragraph*.2045}%
\contentsline {paragraph}{Term Syntax}{476}{paragraph*.2051}%
\contentsline {paragraph}{Ltac Definitions}{477}{paragraph*.2059}%
\contentsline {paragraph}{Reduction}{478}{paragraph*.2063}%
\contentsline {paragraph}{Typing}{479}{paragraph*.2064}%
\contentsline {paragraph}{Effects}{479}{paragraph*.2065}%
\contentsline {subparagraph}{Standard IO}{479}{subparagraph*.2066}%
\contentsline {subparagraph}{Fatal errors}{479}{subparagraph*.2067}%
\contentsline {subparagraph}{Backtracking}{480}{subparagraph*.2068}%
\contentsline {subparagraph}{Goals}{480}{subparagraph*.2069}%
\contentsline {subsubsection}{Meta\sphinxhyphen {}programming}{481}{subsubsection*.2070}%
\contentsline {paragraph}{Overview}{481}{paragraph*.2071}%
\contentsline {paragraph}{Generic Syntax for Quotations}{481}{paragraph*.2072}%
\contentsline {subparagraph}{Built\sphinxhyphen {}in quotations}{481}{subparagraph*.2076}%
\contentsline {subparagraph}{Strict vs. non\sphinxhyphen {}strict mode}{481}{subparagraph*.2077}%
\contentsline {paragraph}{Term Antiquotations}{482}{paragraph*.2078}%
\contentsline {subparagraph}{Syntax}{482}{subparagraph*.2079}%
\contentsline {subparagraph}{Semantics}{482}{subparagraph*.2082}%
\contentsline {subparagraph}{Static semantics}{482}{subparagraph*.2083}%
\contentsline {subparagraph}{Dynamic semantics}{483}{subparagraph*.2084}%
\contentsline {paragraph}{Match over terms}{484}{paragraph*.2087}%
\contentsline {paragraph}{Match over goals}{484}{paragraph*.2091}%
\contentsline {subsubsection}{Notations}{485}{subsubsection*.2095}%
\contentsline {paragraph}{Scopes}{485}{paragraph*.2096}%
\contentsline {paragraph}{Notations}{486}{paragraph*.2099}%
\contentsline {paragraph}{Abbreviations}{487}{paragraph*.2101}%
\contentsline {subsubsection}{Evaluation}{487}{subsubsection*.2102}%
\contentsline {subsubsection}{Debug}{487}{subsubsection*.2104}%
\contentsline {subsubsection}{Compatibility layer with Ltac1}{487}{subsubsection*.2106}%
\contentsline {paragraph}{Ltac1 from Ltac2}{487}{paragraph*.2107}%
\contentsline {subparagraph}{Simple API}{487}{subparagraph*.2108}%
\contentsline {subparagraph}{Low\sphinxhyphen {}level API}{488}{subparagraph*.2111}%
\contentsline {paragraph}{Ltac2 from Ltac1}{488}{paragraph*.2112}%
\contentsline {paragraph}{Switching between Ltac languages}{489}{paragraph*.2115}%
\contentsline {subsubsection}{Transition from Ltac1}{489}{subsubsection*.2116}%
\contentsline {paragraph}{Syntax changes}{489}{paragraph*.2117}%
\contentsline {paragraph}{Tactic delay}{489}{paragraph*.2118}%
\contentsline {paragraph}{Variable binding}{490}{paragraph*.2119}%
\contentsline {subparagraph}{In Ltac expressions}{490}{subparagraph*.2120}%
\contentsline {subparagraph}{In quotations}{490}{subparagraph*.2122}%
\contentsline {paragraph}{Exception catching}{490}{paragraph*.2124}%
\contentsline {chapter}{\numberline {4}Using Coq}{491}{chapter.4}%
\contentsline {section}{\numberline {4.1}Libraries and plugins}{491}{section.4.1}%
\contentsline {subsection}{\numberline {4.1.1}The Coq library}{491}{subsection.4.1.1}%
\contentsline {subsubsection}{The prelude}{491}{subsubsection*.2127}%
\contentsline {paragraph}{Notations}{492}{paragraph*.2128}%
\contentsline {paragraph}{Logic}{492}{paragraph*.2129}%
\contentsline {subparagraph}{Propositional Connectives}{493}{subparagraph*.2131}%
\contentsline {subparagraph}{Quantifiers}{493}{subparagraph*.2132}%
\contentsline {subparagraph}{Equality}{494}{subparagraph*.2133}%
\contentsline {subparagraph}{Lemmas}{494}{subparagraph*.2134}%
\contentsline {paragraph}{Datatypes}{495}{paragraph*.2136}%
\contentsline {subparagraph}{Programming}{495}{subparagraph*.2138}%
\contentsline {paragraph}{Specification}{496}{paragraph*.2141}%
\contentsline {paragraph}{Basic Arithmetic}{497}{paragraph*.2149}%
\contentsline {paragraph}{Well\sphinxhyphen {}founded recursion}{498}{paragraph*.2151}%
\contentsline {paragraph}{Accessing the Type level}{499}{paragraph*.2154}%
\contentsline {paragraph}{Tactics}{499}{paragraph*.2157}%
\contentsline {subsubsection}{The standard library}{500}{subsubsection*.2158}%
\contentsline {paragraph}{Survey}{500}{paragraph*.2159}%
\contentsline {paragraph}{Peano’s arithmetic (nat)}{500}{paragraph*.2160}%
\contentsline {paragraph}{Notations for integer arithmetic}{501}{paragraph*.2161}%
\contentsline {paragraph}{Real numbers library}{502}{paragraph*.2162}%
\contentsline {subparagraph}{Notations for real numbers}{502}{subparagraph*.2163}%
\contentsline {subparagraph}{Some tactics for real numbers}{503}{subparagraph*.2164}%
\contentsline {paragraph}{List library}{504}{paragraph*.2168}%
\contentsline {paragraph}{Floats library}{505}{paragraph*.2169}%
\contentsline {subsubsection}{Users’ contributions}{507}{subsubsection*.2171}%
\contentsline {subsection}{\numberline {4.1.2}Program extraction}{507}{subsection.4.1.2}%
\contentsline {subsubsection}{Generating ML Code}{508}{subsubsection*.2172}%
\contentsline {subsubsection}{Extraction Options}{509}{subsubsection*.2180}%
\contentsline {paragraph}{Setting the target language}{509}{paragraph*.2181}%
\contentsline {paragraph}{Inlining and optimizations}{509}{paragraph*.2183}%
\contentsline {paragraph}{Extra elimination of useless arguments}{510}{paragraph*.2192}%
\contentsline {paragraph}{Realizing axioms}{510}{paragraph*.2195}%
\contentsline {paragraph}{Realizing inductive types}{511}{paragraph*.2198}%
\contentsline {paragraph}{Avoiding conflicts with existing filenames}{512}{paragraph*.2200}%
\contentsline {paragraph}{Additional settings}{513}{paragraph*.2204}%
\contentsline {subsubsection}{Differences between Coq and ML type systems}{513}{subsubsection*.2208}%
\contentsline {subsubsection}{Some examples}{514}{subsubsection*.2209}%
\contentsline {paragraph}{A detailed example: Euclidean division}{514}{paragraph*.2210}%
\contentsline {paragraph}{Extraction's horror museum}{516}{paragraph*.2211}%
\contentsline {paragraph}{Users' Contributions}{516}{paragraph*.2212}%
\contentsline {subsection}{\numberline {4.1.3}Program derivation}{517}{subsection.4.1.3}%
\contentsline {subsection}{\numberline {4.1.4}Functional induction}{518}{subsection.4.1.4}%
\contentsline {subsubsection}{Advanced recursive functions}{518}{subsubsection*.2214}%
\contentsline {subsubsection}{Tactics}{521}{subsubsection*.2222}%
\contentsline {subsubsection}{Generation of induction principles with \sphinxstyleliteralintitle {\sphinxupquote {Functional}} \sphinxstyleliteralintitle {\sphinxupquote {Scheme}}}{522}{subsubsection*.2229}%
\contentsline {subsection}{\numberline {4.1.5}Writing Coq libraries and plugins}{527}{subsection.4.1.5}%
\contentsline {subsubsection}{Deprecating library objects or tactics}{527}{subsubsection*.2231}%
\contentsline {section}{\numberline {4.2}Command\sphinxhyphen {}line and graphical tools}{528}{section.4.2}%
\contentsline {subsection}{\numberline {4.2.1}The Coq commands}{528}{subsection.4.2.1}%
\contentsline {subsubsection}{Interactive use (coqtop)}{529}{subsubsection*.2237}%
\contentsline {subsubsection}{Batch compilation (coqc)}{529}{subsubsection*.2239}%
\contentsline {subsubsection}{Customization at launch time}{529}{subsubsection*.2240}%
\contentsline {paragraph}{By resource file}{529}{paragraph*.2241}%
\contentsline {paragraph}{By environment variables}{529}{paragraph*.2242}%
\contentsline {paragraph}{By command line options}{530}{paragraph*.2244}%
\contentsline {subsubsection}{Compiled interfaces (produced using \sphinxstyleliteralintitle {\sphinxupquote {\sphinxhyphen {}vos}})}{532}{subsubsection*.2246}%
\contentsline {subsubsection}{Compiled libraries checker (coqchk)}{534}{subsubsection*.2248}%
\contentsline {subsection}{\numberline {4.2.2}Utilities}{535}{subsection.4.2.2}%
\contentsline {subsubsection}{Using Coq as a library}{535}{subsubsection*.2249}%
\contentsline {subsubsection}{Building a Coq project}{535}{subsubsection*.2250}%
\contentsline {paragraph}{Building a Coq project with coq\_makefile}{535}{paragraph*.2251}%
\contentsline {subparagraph}{CoqMakefile.local}{536}{subparagraph*.2252}%
\contentsline {subparagraph}{Timing targets and performance testing}{537}{subparagraph*.2253}%
\contentsline {subparagraph}{Reusing/extending the generated Makefile}{541}{subparagraph*.2254}%
\contentsline {subparagraph}{Building a subset of the targets with \sphinxstyleliteralintitle {\sphinxupquote {\sphinxhyphen {}j}}}{542}{subparagraph*.2255}%
\contentsline {subparagraph}{Precompiling for \sphinxstyleliteralintitle {\sphinxupquote {native\_compute}}}{542}{subparagraph*.2256}%
\contentsline {paragraph}{Building a Coq project with Dune}{543}{paragraph*.2257}%
\contentsline {subsubsection}{Computing Module dependencies}{544}{subsubsection*.2258}%
\contentsline {subsubsection}{Embedded Coq phrases inside LaTeX documents}{544}{subsubsection*.2259}%
\contentsline {subsubsection}{Man pages}{544}{subsubsection*.2260}%
\contentsline {subsection}{\numberline {4.2.3}Documenting Coq files with coqdoc}{544}{subsection.4.2.3}%
\contentsline {subsubsection}{Principles}{545}{subsubsection*.2261}%
\contentsline {paragraph}{Coq material inside documentation.}{545}{paragraph*.2262}%
\contentsline {paragraph}{Pretty\sphinxhyphen {}printing.}{545}{paragraph*.2263}%
\contentsline {paragraph}{Sections}{546}{paragraph*.2264}%
\contentsline {paragraph}{Lists.}{546}{paragraph*.2265}%
\contentsline {paragraph}{Rules.}{546}{paragraph*.2266}%
\contentsline {paragraph}{Emphasis.}{546}{paragraph*.2267}%
\contentsline {paragraph}{Escaping to LaTeX and HTML.}{547}{paragraph*.2268}%
\contentsline {paragraph}{Verbatim}{547}{paragraph*.2269}%
\contentsline {paragraph}{Hyperlinks}{547}{paragraph*.2270}%
\contentsline {paragraph}{Hiding / Showing parts of the source}{547}{paragraph*.2271}%
\contentsline {subsubsection}{Usage}{548}{subsubsection*.2272}%
\contentsline {paragraph}{Command line options}{548}{paragraph*.2273}%
\contentsline {subsubsection}{The coqdoc LaTeX style file}{551}{subsubsection*.2274}%
\contentsline {subsection}{\numberline {4.2.4}Coq Integrated Development Environment}{551}{subsection.4.2.4}%
\contentsline {subsubsection}{Managing files and buffers, basic editing}{552}{subsubsection*.2276}%
\contentsline {subsubsection}{Interactive navigation into Coq scripts}{553}{subsubsection*.2277}%
\contentsline {subsubsection}{Vernacular commands, templates}{554}{subsubsection*.2278}%
\contentsline {subsubsection}{Queries}{554}{subsubsection*.2279}%
\contentsline {subsubsection}{Compilation}{555}{subsubsection*.2280}%
\contentsline {subsubsection}{Customizations}{555}{subsubsection*.2281}%
\contentsline {subsubsection}{Using Unicode symbols}{556}{subsubsection*.2282}%
\contentsline {paragraph}{Displaying Unicode symbols}{556}{paragraph*.2283}%
\contentsline {paragraph}{Bindings for input of Unicode symbols}{556}{paragraph*.2284}%
\contentsline {paragraph}{Adding custom bindings}{556}{paragraph*.2285}%
\contentsline {paragraph}{Character encoding for saved files}{557}{paragraph*.2286}%
\contentsline {subsection}{\numberline {4.2.5}Asynchronous and Parallel Proof Processing}{557}{subsection.4.2.5}%
\contentsline {subsubsection}{Proof annotations}{558}{subsubsection*.2287}%
\contentsline {paragraph}{Automatic suggestion of proof annotations}{558}{paragraph*.2288}%
\contentsline {subsubsection}{Proof blocks and error resilience}{558}{subsubsection*.2289}%
\contentsline {paragraph}{Caveats}{559}{paragraph*.2290}%
\contentsline {subsubsection}{Interactive mode}{559}{subsubsection*.2291}%
\contentsline {paragraph}{Caveats}{559}{paragraph*.2292}%
\contentsline {subsubsection}{Batch mode}{560}{subsubsection*.2293}%
\contentsline {subsubsection}{Limiting the number of parallel workers}{561}{subsubsection*.2294}%
\contentsline {chapter}{\numberline {5}Appendix}{562}{chapter.5}%
\contentsline {section}{\numberline {5.1}History and recent changes}{562}{section.5.1}%
\contentsline {subsection}{\numberline {5.1.1}Early history of Coq}{562}{subsection.5.1.1}%
\contentsline {subsubsection}{Historical roots}{562}{subsubsection*.2295}%
\contentsline {subsubsection}{Versions 1 to 5}{563}{subsubsection*.2296}%
\contentsline {paragraph}{Version 1}{565}{paragraph*.2297}%
\contentsline {paragraph}{Version 2}{565}{paragraph*.2298}%
\contentsline {paragraph}{Version 3}{566}{paragraph*.2299}%
\contentsline {paragraph}{Version 4}{566}{paragraph*.2300}%
\contentsline {paragraph}{Version 5}{568}{paragraph*.2301}%
\contentsline {subsubsection}{Versions 6}{568}{subsubsection*.2302}%
\contentsline {paragraph}{Version 6.1}{568}{paragraph*.2303}%
\contentsline {paragraph}{Version 6.2}{569}{paragraph*.2304}%
\contentsline {paragraph}{Version 6.3}{569}{paragraph*.2305}%
\contentsline {subsubsection}{Versions 7}{570}{subsubsection*.2306}%
\contentsline {paragraph}{Summary of changes}{570}{paragraph*.2307}%
\contentsline {paragraph}{Details of changes in 7.0 and 7.1}{571}{paragraph*.2308}%
\contentsline {subparagraph}{Main novelties}{571}{subparagraph*.2309}%
\contentsline {subparagraph}{Details of changes}{572}{subparagraph*.2310}%
\contentsline {subparagraph}{Language: new "let\sphinxhyphen {}in" construction}{572}{subparagraph*.2311}%
\contentsline {subparagraph}{Language: long names}{572}{subparagraph*.2312}%
\contentsline {subparagraph}{Language: miscellaneous}{572}{subparagraph*.2313}%
\contentsline {subparagraph}{Language: Cases}{572}{subparagraph*.2314}%
\contentsline {subparagraph}{Reduction}{573}{subparagraph*.2315}%
\contentsline {subparagraph}{New tactics}{573}{subparagraph*.2316}%
\contentsline {subparagraph}{Changes in existing tactics}{573}{subparagraph*.2317}%
\contentsline {subparagraph}{Efficiency}{574}{subparagraph*.2318}%
\contentsline {subparagraph}{Concrete syntax of constructions}{574}{subparagraph*.2319}%
\contentsline {subparagraph}{Parsing and grammar extension}{574}{subparagraph*.2320}%
\contentsline {subparagraph}{New commands}{575}{subparagraph*.2321}%
\contentsline {subparagraph}{Changes in existing commands}{575}{subparagraph*.2322}%
\contentsline {subparagraph}{Tools}{575}{subparagraph*.2323}%
\contentsline {subparagraph}{Extraction}{576}{subparagraph*.2324}%
\contentsline {subparagraph}{Standard library}{576}{subparagraph*.2325}%
\contentsline {subparagraph}{New user contributions}{576}{subparagraph*.2326}%
\contentsline {paragraph}{Details of changes in 7.2}{576}{paragraph*.2327}%
\contentsline {paragraph}{Details of changes in 7.3}{578}{paragraph*.2328}%
\contentsline {subparagraph}{Changes in 7.3.1}{579}{subparagraph*.2329}%
\contentsline {paragraph}{Details of changes in 7.4}{580}{paragraph*.2330}%
\contentsline {subsection}{\numberline {5.1.2}Recent changes}{582}{subsection.5.1.2}%
\contentsline {subsubsection}{Version 8.12}{582}{subsubsection*.2331}%
\contentsline {paragraph}{Summary of changes}{582}{paragraph*.2332}%
\contentsline {paragraph}{Changes in 8.12+beta1}{584}{paragraph*.2333}%
\contentsline {subparagraph}{Kernel}{584}{subparagraph*.2349}%
\contentsline {subparagraph}{Specification language, type inference}{584}{subparagraph*.2350}%
\contentsline {subparagraph}{Notations}{585}{subparagraph*.2354}%
\contentsline {subparagraph}{Tactics}{587}{subparagraph*.2355}%
\contentsline {subparagraph}{Tactic language}{589}{subparagraph*.2356}%
\contentsline {subparagraph}{SSReflect}{589}{subparagraph*.2357}%
\contentsline {subparagraph}{Flags, options and attributes}{590}{subparagraph*.2359}%
\contentsline {subparagraph}{Commands}{590}{subparagraph*.2360}%
\contentsline {subparagraph}{Tools}{592}{subparagraph*.2363}%
\contentsline {subparagraph}{CoqIDE}{594}{subparagraph*.2364}%
\contentsline {subparagraph}{Standard library}{594}{subparagraph*.2365}%
\contentsline {subparagraph}{Reals library}{597}{subparagraph*.2366}%
\contentsline {subparagraph}{Extraction}{598}{subparagraph*.2367}%
\contentsline {subparagraph}{Reference manual}{598}{subparagraph*.2368}%
\contentsline {subparagraph}{Infrastructure and dependencies}{599}{subparagraph*.2369}%
\contentsline {paragraph}{Changes in 8.12.0}{599}{paragraph*.2370}%
\contentsline {subsubsection}{Version 8.11}{600}{subsubsection*.2371}%
\contentsline {paragraph}{Summary of changes}{600}{paragraph*.2372}%
\contentsline {paragraph}{Changes in 8.11+beta1}{602}{paragraph*.2373}%
\contentsline {paragraph}{Changes in 8.11.0}{607}{paragraph*.2384}%
\contentsline {paragraph}{Changes in 8.11.1}{609}{paragraph*.2385}%
\contentsline {paragraph}{Changes in 8.11.2}{610}{paragraph*.2386}%
\contentsline {subsubsection}{Version 8.10}{610}{subsubsection*.2387}%
\contentsline {paragraph}{Summary of changes}{610}{paragraph*.2388}%
\contentsline {paragraph}{Other changes in 8.10+beta1}{613}{paragraph*.2389}%
\contentsline {paragraph}{Changes in 8.10+beta2}{619}{paragraph*.2390}%
\contentsline {paragraph}{Changes in 8.10+beta3}{619}{paragraph*.2391}%
\contentsline {paragraph}{Changes in 8.10.0}{620}{paragraph*.2392}%
\contentsline {paragraph}{Changes in 8.10.1}{620}{paragraph*.2393}%
\contentsline {paragraph}{Changes in 8.10.2}{621}{paragraph*.2394}%
\contentsline {subsubsection}{Version 8.9}{622}{subsubsection*.2395}%
\contentsline {paragraph}{Summary of changes}{622}{paragraph*.2396}%
\contentsline {paragraph}{Details of changes in 8.9+beta1}{624}{paragraph*.2397}%
\contentsline {paragraph}{Changes in 8.8.0}{626}{paragraph*.2398}%
\contentsline {paragraph}{Changes in 8.8.1}{627}{paragraph*.2399}%
\contentsline {subsubsection}{Version 8.8}{627}{subsubsection*.2400}%
\contentsline {paragraph}{Summary of changes}{627}{paragraph*.2401}%
\contentsline {paragraph}{Details of changes in 8.8+beta1}{628}{paragraph*.2402}%
\contentsline {paragraph}{Details of changes in 8.8.0}{631}{paragraph*.2403}%
\contentsline {paragraph}{Details of changes in 8.8.1}{631}{paragraph*.2404}%
\contentsline {paragraph}{Details of changes in 8.8.2}{632}{paragraph*.2405}%
\contentsline {subsubsection}{Version 8.7}{632}{subsubsection*.2406}%
\contentsline {paragraph}{Summary of changes}{632}{paragraph*.2407}%
\contentsline {paragraph}{Potential compatibility issues}{634}{paragraph*.2408}%
\contentsline {paragraph}{Details of changes in 8.7+beta1}{634}{paragraph*.2409}%
\contentsline {paragraph}{Details of changes in 8.7+beta2}{636}{paragraph*.2410}%
\contentsline {paragraph}{Details of changes in 8.7.0}{637}{paragraph*.2411}%
\contentsline {paragraph}{Details of changes in 8.7.1}{637}{paragraph*.2412}%
\contentsline {paragraph}{Details of changes in 8.7.2}{637}{paragraph*.2413}%
\contentsline {subsubsection}{Version 8.6}{637}{subsubsection*.2414}%
\contentsline {paragraph}{Summary of changes}{637}{paragraph*.2415}%
\contentsline {paragraph}{Potential sources of incompatibilities}{639}{paragraph*.2416}%
\contentsline {paragraph}{Details of changes in 8.6beta1}{639}{paragraph*.2417}%
\contentsline {paragraph}{Details of changes in 8.6}{641}{paragraph*.2418}%
\contentsline {paragraph}{Details of changes in 8.6.1}{641}{paragraph*.2419}%
\contentsline {subsubsection}{Version 8.5}{643}{subsubsection*.2420}%
\contentsline {paragraph}{Summary of changes}{643}{paragraph*.2421}%
\contentsline {paragraph}{Potential sources of incompatibilities}{645}{paragraph*.2422}%
\contentsline {paragraph}{Details of changes in 8.5beta1}{646}{paragraph*.2423}%
\contentsline {paragraph}{Details of changes in 8.5beta2}{653}{paragraph*.2424}%
\contentsline {paragraph}{Details of changes in 8.5beta3}{653}{paragraph*.2425}%
\contentsline {paragraph}{Details of changes in 8.5}{655}{paragraph*.2426}%
\contentsline {paragraph}{Details of changes in 8.5pl1}{655}{paragraph*.2427}%
\contentsline {paragraph}{Details of changes in 8.5pl2}{657}{paragraph*.2428}%
\contentsline {paragraph}{Details of changes in 8.5pl3}{658}{paragraph*.2429}%
\contentsline {subsubsection}{Version 8.4}{659}{subsubsection*.2430}%
\contentsline {paragraph}{Summary of changes}{659}{paragraph*.2431}%
\contentsline {paragraph}{Potential sources of incompatibilities}{661}{paragraph*.2432}%
\contentsline {paragraph}{Details of changes in 8.4beta}{662}{paragraph*.2433}%
\contentsline {paragraph}{Details of changes in 8.4beta2}{666}{paragraph*.2434}%
\contentsline {paragraph}{Details of changes in 8.4}{667}{paragraph*.2435}%
\contentsline {subsubsection}{Version 8.3}{667}{subsubsection*.2436}%
\contentsline {paragraph}{Summary of changes}{667}{paragraph*.2437}%
\contentsline {paragraph}{Details of changes}{668}{paragraph*.2438}%
\contentsline {subsubsection}{Version 8.2}{674}{subsubsection*.2439}%
\contentsline {paragraph}{Summary of changes}{674}{paragraph*.2440}%
\contentsline {paragraph}{Details of changes}{675}{paragraph*.2441}%
\contentsline {subsubsection}{Version 8.1}{683}{subsubsection*.2442}%
\contentsline {paragraph}{Summary of changes}{683}{paragraph*.2443}%
\contentsline {paragraph}{Details of changes in 8.1beta}{684}{paragraph*.2444}%
\contentsline {paragraph}{Details of changes in 8.1gamma}{687}{paragraph*.2445}%
\contentsline {paragraph}{Details of changes in 8.1}{688}{paragraph*.2446}%
\contentsline {subsubsection}{Version 8.0}{689}{subsubsection*.2447}%
\contentsline {paragraph}{Summary of changes}{689}{paragraph*.2448}%
\contentsline {paragraph}{Details of changes in 8.0beta old syntax}{690}{paragraph*.2449}%
\contentsline {paragraph}{Details of changes in 8.0beta new syntax}{693}{paragraph*.2450}%
\contentsline {paragraph}{Details of changes in 8.0}{694}{paragraph*.2451}%
\contentsline {chapter}{Bibliography}{696}{chapter*.2453}%
\contentsline {chapter}{Glossary}{700}{section*.2454}%
\contentsline {chapter}{Command Index}{701}{section*.2455}%
\contentsline {chapter}{Tactic Index}{705}{section*.2456}%
\contentsline {chapter}{Flags, options and Tables Index}{709}{section*.2457}%
\contentsline {chapter}{Gallina Index}{711}{section*.2458}%
\contentsline {chapter}{Errors and Warnings Index}{712}{section*.2459}%
\contentsline {chapter}{Attribute Index}{717}{section*.2460}%
\contentsline {chapter}{Index}{718}{section*.2461}%
