\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}{5}{subsubsection*.22}%
\contentsline {subsubsection}{Settings}{7}{subsubsection*.44}%
\contentsline {paragraph}{Attributes}{7}{paragraph*.45}%
\contentsline {paragraph}{Flags, Options and Tables}{8}{paragraph*.53}%
\contentsline {subparagraph}{Locality attributes supported by \sphinxstyleliteralintitle {\sphinxupquote {Set}} and \sphinxstyleliteralintitle {\sphinxupquote {Unset}}}{9}{subparagraph*.70}%
\contentsline {subsection}{\numberline {2.1.2}Sorts}{9}{subsection.2.1.2}%
\contentsline {subsection}{\numberline {2.1.3}Functions and assumptions}{10}{subsection.2.1.3}%
\contentsline {subsubsection}{Binders}{10}{subsubsection*.79}%
\contentsline {subsubsection}{Functions (fun) and function types (forall)}{10}{subsubsection*.83}%
\contentsline {subsubsection}{Function application}{11}{subsubsection*.85}%
\contentsline {subsubsection}{Assumptions}{11}{subsubsection*.88}%
\contentsline {subsection}{\numberline {2.1.4}Definitions}{12}{subsection.2.1.4}%
\contentsline {subsubsection}{Let\sphinxhyphen {}in definitions}{12}{subsubsection*.106}%
\contentsline {subsubsection}{Type cast}{12}{subsubsection*.108}%
\contentsline {subsubsection}{Top\sphinxhyphen {}level definitions}{12}{subsubsection*.110}%
\contentsline {subsubsection}{Assertions and proofs}{13}{subsubsection*.117}%
\contentsline {subsection}{\numberline {2.1.5}Conversion rules}{14}{subsection.2.1.5}%
\contentsline {subsubsection}{α\sphinxhyphen {}conversion}{14}{subsubsection*.129}%
\contentsline {subsubsection}{β\sphinxhyphen {}reduction}{14}{subsubsection*.131}%
\contentsline {subsubsection}{ι\sphinxhyphen {}reduction}{15}{subsubsection*.132}%
\contentsline {subsubsection}{δ\sphinxhyphen {}reduction}{15}{subsubsection*.133}%
\contentsline {subsubsection}{ζ\sphinxhyphen {}reduction}{15}{subsubsection*.136}%
\contentsline {subsubsection}{η\sphinxhyphen {}expansion}{15}{subsubsection*.138}%
\contentsline {subsubsection}{Proof Irrelevance}{16}{subsubsection*.139}%
\contentsline {subsubsection}{Convertibility}{16}{subsubsection*.140}%
\contentsline {subsection}{\numberline {2.1.6}Typing rules}{17}{subsection.2.1.6}%
\contentsline {subsubsection}{The terms}{17}{subsubsection*.142}%
\contentsline {subsubsection}{Typing rules}{18}{subsubsection*.146}%
\contentsline {subsubsection}{Subtyping rules}{20}{subsubsection*.168}%
\contentsline {subsubsection}{Admissible rules for global environments}{21}{subsubsection*.171}%
\contentsline {subsubsection}{The Calculus of Inductive Constructions with impredicative Set}{22}{subsubsection*.180}%
\contentsline {subsection}{\numberline {2.1.7}Variants and the \sphinxstyleliteralintitle {\sphinxupquote {match}} construct}{23}{subsection.2.1.7}%
\contentsline {subsubsection}{Variants}{23}{subsubsection*.184}%
\contentsline {paragraph}{Private (matching) inductive types}{23}{paragraph*.188}%
\contentsline {subsubsection}{Definition by cases: match}{24}{subsubsection*.191}%
\contentsline {subsection}{\numberline {2.1.8}Record types}{26}{subsection.2.1.8}%
\contentsline {subsubsection}{Primitive Projections}{29}{subsubsection*.218}%
\contentsline {paragraph}{Primitive Record Types}{29}{paragraph*.221}%
\contentsline {paragraph}{Reduction}{30}{paragraph*.222}%
\contentsline {paragraph}{Compatibility Projections and \sphinxstyleliteralintitle {\sphinxupquote {match}}}{30}{paragraph*.223}%
\contentsline {subsection}{\numberline {2.1.9}Inductive types and recursive functions}{30}{subsection.2.1.9}%
\contentsline {subsubsection}{Inductive types}{30}{subsubsection*.224}%
\contentsline {paragraph}{Simple inductive types}{31}{paragraph*.231}%
\contentsline {paragraph}{Simple annotated inductive types}{32}{paragraph*.232}%
\contentsline {paragraph}{Parameterized inductive types}{32}{paragraph*.233}%
\contentsline {paragraph}{Mutually defined inductive types}{35}{paragraph*.235}%
\contentsline {subsubsection}{Recursive functions: fix}{36}{subsubsection*.236}%
\contentsline {subsubsection}{Top\sphinxhyphen {}level recursive functions}{36}{subsubsection*.240}%
\contentsline {subsubsection}{Theory of inductive definitions}{39}{subsubsection*.244}%
\contentsline {paragraph}{Types of inductive objects}{40}{paragraph*.245}%
\contentsline {paragraph}{Well\sphinxhyphen {}formed inductive definitions}{40}{paragraph*.248}%
\contentsline {subparagraph}{Arity of a given sort}{40}{subparagraph*.249}%
\contentsline {subparagraph}{Arity}{41}{subparagraph*.250}%
\contentsline {subparagraph}{Type of constructor}{41}{subparagraph*.251}%
\contentsline {subparagraph}{Positivity Condition}{41}{subparagraph*.252}%
\contentsline {subparagraph}{Strict positivity}{41}{subparagraph*.253}%
\contentsline {subparagraph}{Nested Positivity}{42}{subparagraph*.254}%
\contentsline {subparagraph}{Correctness rules}{42}{subparagraph*.255}%
\contentsline {subparagraph}{Template polymorphism}{45}{subparagraph*.257}%
\contentsline {paragraph}{Destructors}{48}{paragraph*.265}%
\contentsline {subparagraph}{The match ... with ... end construction}{49}{subparagraph*.266}%
\contentsline {paragraph}{Fixpoint definitions}{53}{paragraph*.280}%
\contentsline {subparagraph}{Typing rule}{53}{subparagraph*.281}%
\contentsline {subparagraph}{Reduction rule}{55}{subparagraph*.283}%
\contentsline {subsection}{\numberline {2.1.10}Co\sphinxhyphen {}inductive types and co\sphinxhyphen {}recursive functions}{55}{subsection.2.1.10}%
\contentsline {subsubsection}{Co\sphinxhyphen {}inductive types}{55}{subsubsection*.285}%
\contentsline {paragraph}{Caveat}{56}{paragraph*.287}%
\contentsline {subsubsection}{Co\sphinxhyphen {}recursive functions: cofix}{57}{subsubsection*.288}%
\contentsline {subsubsection}{Top\sphinxhyphen {}level definitions of co\sphinxhyphen {}recursive functions}{57}{subsubsection*.291}%
\contentsline {subsection}{\numberline {2.1.11}Section mechanism}{58}{subsection.2.1.11}%
\contentsline {subsection}{\numberline {2.1.12}The Module System}{60}{subsection.2.1.12}%
\contentsline {subsubsection}{Modules and module types}{60}{subsubsection*.303}%
\contentsline {subsubsection}{Using modules}{61}{subsubsection*.304}%
\contentsline {paragraph}{Examples}{64}{paragraph*.330}%
\contentsline {subsubsection}{Typing Modules}{67}{subsubsection*.333}%
\contentsline {subsubsection}{Libraries and qualified names}{71}{subsubsection*.375}%
\contentsline {paragraph}{Names of libraries}{71}{paragraph*.376}%
\contentsline {paragraph}{Qualified identifiers}{72}{paragraph*.377}%
\contentsline {paragraph}{Libraries and filesystem}{73}{paragraph*.380}%
\contentsline {subsubsection}{Controlling the scope of commands with locality attributes}{74}{subsubsection*.381}%
\contentsline {subsection}{\numberline {2.1.13}Primitive objects}{75}{subsection.2.1.13}%
\contentsline {subsubsection}{Primitive Integers}{75}{subsubsection*.385}%
\contentsline {subsubsection}{Primitive Floats}{75}{subsubsection*.386}%
\contentsline {subsubsection}{Primitive Arrays}{76}{subsubsection*.387}%
\contentsline {subsection}{\numberline {2.1.14}Polymorphic Universes}{77}{subsection.2.1.14}%
\contentsline {subsubsection}{General Presentation}{77}{subsubsection*.388}%
\contentsline {subsubsection}{Polymorphic, Monomorphic}{79}{subsubsection*.389}%
\contentsline {subsubsection}{Cumulative, NonCumulative}{79}{subsubsection*.395}%
\contentsline {paragraph}{Specifying cumulativity}{81}{paragraph*.402}%
\contentsline {paragraph}{An example of a proof using cumulativity}{81}{paragraph*.403}%
\contentsline {paragraph}{Cumulativity Weak Constraints}{82}{paragraph*.404}%
\contentsline {subsubsection}{Global and local universes}{82}{subsubsection*.406}%
\contentsline {subsubsection}{Conversion and unification}{82}{subsubsection*.407}%
\contentsline {subsubsection}{Minimization}{82}{subsubsection*.408}%
\contentsline {subsubsection}{Explicit Universes}{83}{subsubsection*.410}%
\contentsline {subsubsection}{Printing universes}{83}{subsubsection*.423}%
\contentsline {paragraph}{Polymorphic definitions}{84}{paragraph*.426}%
\contentsline {subsubsection}{Universe polymorphism and sections}{87}{subsubsection*.429}%
\contentsline {subsection}{\numberline {2.1.15}SProp (proof irrelevant propositions)}{87}{subsection.2.1.15}%
\contentsline {subsubsection}{Basic constructs}{88}{subsubsection*.432}%
\contentsline {subsubsection}{Encodings for strict propositions}{90}{subsubsection*.433}%
\contentsline {subsubsection}{Definitional UIP}{90}{subsubsection*.434}%
\contentsline {paragraph}{Non Termination with UIP}{91}{paragraph*.436}%
\contentsline {subsubsection}{Issues with non\sphinxhyphen {}cumulativity}{91}{subsubsection*.437}%
\contentsline {section}{\numberline {2.2}Language extensions}{93}{section.2.2}%
\contentsline {subsection}{\numberline {2.2.1}Existential variables}{93}{subsection.2.2.1}%
\contentsline {subsubsection}{Inferable subterms}{94}{subsubsection*.443}%
\contentsline {subsubsection}{Explicit displaying of existential instances for pretty\sphinxhyphen {}printing}{94}{subsubsection*.444}%
\contentsline {subsubsection}{Solving existential variables using tactics}{94}{subsubsection*.446}%
\contentsline {subsection}{\numberline {2.2.2}Implicit arguments}{95}{subsection.2.2.2}%
\contentsline {subsubsection}{The different kinds of implicit arguments}{95}{subsubsection*.447}%
\contentsline {paragraph}{Implicit arguments inferable from the knowledge of other arguments of a function}{95}{paragraph*.448}%
\contentsline {paragraph}{Implicit arguments inferable by resolution}{96}{paragraph*.449}%
\contentsline {subsubsection}{Maximal and non\sphinxhyphen {}maximal insertion of implicit arguments}{96}{subsubsection*.450}%
\contentsline {paragraph}{Trailing Implicit Arguments}{96}{paragraph*.451}%
\contentsline {subsubsection}{Casual use of implicit arguments}{97}{subsubsection*.453}%
\contentsline {subsubsection}{Declaration of implicit arguments}{97}{subsubsection*.455}%
\contentsline {paragraph}{Implicit Argument Binders}{97}{paragraph*.456}%
\contentsline {paragraph}{Mode for automatic declaration of implicit arguments}{99}{paragraph*.460}%
\contentsline {paragraph}{Controlling strict implicit arguments}{99}{paragraph*.462}%
\contentsline {paragraph}{Controlling contextual implicit arguments}{99}{paragraph*.465}%
\contentsline {paragraph}{Controlling reversible\sphinxhyphen {}pattern implicit arguments}{99}{paragraph*.467}%
\contentsline {paragraph}{Controlling the insertion of implicit arguments not followed by explicit arguments}{100}{paragraph*.469}%
\contentsline {paragraph}{Combining manual declaration and automatic declaration}{100}{paragraph*.471}%
\contentsline {subsubsection}{Explicit applications}{100}{subsubsection*.472}%
\contentsline {subsubsection}{Displaying implicit arguments}{101}{subsubsection*.473}%
\contentsline {subsubsection}{Displaying implicit arguments when pretty\sphinxhyphen {}printing}{101}{subsubsection*.475}%
\contentsline {subsubsection}{Interaction with subtyping}{102}{subsubsection*.478}%
\contentsline {subsubsection}{Deactivation of implicit arguments for parsing}{102}{subsubsection*.479}%
\contentsline {subsubsection}{Implicit types of variables}{103}{subsubsection*.482}%
\contentsline {subsubsection}{Implicit generalization}{104}{subsubsection*.488}%
\contentsline {subsection}{\numberline {2.2.3}Extended pattern matching}{105}{subsection.2.2.3}%
\contentsline {subsubsection}{Variants and extensions of \sphinxstyleliteralintitle {\sphinxupquote {match}}}{106}{subsubsection*.493}%
\contentsline {paragraph}{Multiple and nested pattern matching}{106}{paragraph*.494}%
\contentsline {paragraph}{Pattern\sphinxhyphen {}matching on boolean values: the if expression}{106}{paragraph*.495}%
\contentsline {paragraph}{Irrefutable patterns: the destructuring let variants}{107}{paragraph*.497}%
\contentsline {subparagraph}{First destructuring let syntax}{107}{subparagraph*.499}%
\contentsline {subparagraph}{Second destructuring let syntax}{107}{subparagraph*.500}%
\contentsline {paragraph}{Controlling pretty\sphinxhyphen {}printing of match expressions}{108}{paragraph*.501}%
\contentsline {subparagraph}{Printing nested patterns}{108}{subparagraph*.502}%
\contentsline {subparagraph}{Factorization of clauses with same right\sphinxhyphen {}hand side}{108}{subparagraph*.504}%
\contentsline {subparagraph}{Use of a default clause}{108}{subparagraph*.506}%
\contentsline {subparagraph}{Printing of wildcard patterns}{109}{subparagraph*.508}%
\contentsline {subparagraph}{Printing of the elimination predicate}{109}{subparagraph*.510}%
\contentsline {subparagraph}{Printing matching on irrefutable patterns}{109}{subparagraph*.512}%
\contentsline {subparagraph}{Printing matching on booleans}{109}{subparagraph*.514}%
\contentsline {paragraph}{Conventions about unused pattern\sphinxhyphen {}matching variables}{110}{paragraph*.516}%
\contentsline {subsubsection}{Patterns}{110}{subsubsection*.518}%
\contentsline {subsubsection}{Multiple patterns}{111}{subsubsection*.519}%
\contentsline {subsubsection}{Aliasing subpatterns}{112}{subsubsection*.520}%
\contentsline {subsubsection}{Nested patterns}{112}{subsubsection*.521}%
\contentsline {subsubsection}{Disjunctive patterns}{113}{subsubsection*.522}%
\contentsline {subsubsection}{About patterns of parametric types}{114}{subsubsection*.523}%
\contentsline {paragraph}{Parameters in patterns}{114}{paragraph*.524}%
\contentsline {subsubsection}{Implicit arguments in patterns}{115}{subsubsection*.526}%
\contentsline {subsubsection}{Matching objects of dependent types}{115}{subsubsection*.527}%
\contentsline {subsubsection}{Understanding dependencies in patterns}{115}{subsubsection*.528}%
\contentsline {subsubsection}{When the elimination predicate must be provided}{116}{subsubsection*.529}%
\contentsline {paragraph}{Dependent pattern matching}{116}{paragraph*.530}%
\contentsline {paragraph}{Multiple dependent pattern matching}{116}{paragraph*.531}%
\contentsline {paragraph}{Patterns in \sphinxstyleliteralintitle {\sphinxupquote {in}}}{117}{paragraph*.532}%
\contentsline {subsubsection}{Using pattern matching to write proofs}{117}{subsubsection*.533}%
\contentsline {subsubsection}{Pattern\sphinxhyphen {}matching on inductive objects involving local definitions}{118}{subsubsection*.534}%
\contentsline {subsubsection}{Pattern\sphinxhyphen {}matching and coercions}{118}{subsubsection*.535}%
\contentsline {subsubsection}{When does the expansion strategy fail?}{119}{subsubsection*.536}%
\contentsline {subsection}{\numberline {2.2.4}Syntax extensions and notation scopes}{119}{subsection.2.2.4}%
\contentsline {subsubsection}{Notations}{120}{subsubsection*.544}%
\contentsline {paragraph}{Basic notations}{120}{paragraph*.545}%
\contentsline {paragraph}{Precedences and associativity}{120}{paragraph*.547}%
\contentsline {paragraph}{Complex notations}{121}{paragraph*.548}%
\contentsline {paragraph}{Simple factorization rules}{122}{paragraph*.549}%
\contentsline {paragraph}{Use of notations for printing}{122}{paragraph*.550}%
\contentsline {paragraph}{The Infix command}{124}{paragraph*.551}%
\contentsline {paragraph}{Reserving notations}{124}{paragraph*.553}%
\contentsline {paragraph}{Simultaneous definition of terms and notations}{125}{paragraph*.556}%
\contentsline {paragraph}{Displaying information about notations}{125}{paragraph*.559}%
\contentsline {paragraph}{Locating notations}{127}{paragraph*.563}%
\contentsline {paragraph}{Inheritance of the properties of arguments of constants bound to a notation}{128}{paragraph*.564}%
\contentsline {paragraph}{Notations and binders}{128}{paragraph*.565}%
\contentsline {subparagraph}{Binders bound in the notation and parsed as identifiers}{128}{subparagraph*.566}%
\contentsline {subparagraph}{Binders bound in the notation and parsed as patterns}{128}{subparagraph*.567}%
\contentsline {subparagraph}{Binders bound in the notation and parsed as terms}{129}{subparagraph*.568}%
\contentsline {subparagraph}{Binders bound in the notation and parsed as general binders}{130}{subparagraph*.569}%
\contentsline {subparagraph}{Binders not bound in the notation}{130}{subparagraph*.570}%
\contentsline {subparagraph}{Notations with expressions used both as binder and term}{130}{subparagraph*.571}%
\contentsline {paragraph}{Notations with recursive patterns}{131}{paragraph*.572}%
\contentsline {paragraph}{Notations with recursive patterns involving binders}{132}{paragraph*.573}%
\contentsline {paragraph}{Predefined entries}{133}{paragraph*.574}%
\contentsline {paragraph}{Custom entries}{133}{paragraph*.575}%
\contentsline {paragraph}{Syntax}{136}{paragraph*.578}%
\contentsline {subsubsection}{Notation scopes}{137}{subsubsection*.584}%
\contentsline {paragraph}{Global interpretation rules for notations}{137}{paragraph*.589}%
\contentsline {paragraph}{Local interpretation rules for notations}{138}{paragraph*.592}%
\contentsline {subparagraph}{Opening a notation scope locally}{138}{subparagraph*.593}%
\contentsline {subparagraph}{Binding types or coercion classes to a notation scope}{138}{subparagraph*.597}%
\contentsline {paragraph}{The \sphinxstyleliteralintitle {\sphinxupquote {type\_scope}} notation scope}{139}{paragraph*.599}%
\contentsline {paragraph}{The \sphinxstyleliteralintitle {\sphinxupquote {function\_scope}} notation scope}{139}{paragraph*.600}%
\contentsline {paragraph}{Notation scopes used in the standard library of Coq}{139}{paragraph*.601}%
\contentsline {paragraph}{Displaying information about scopes}{140}{paragraph*.602}%
\contentsline {subsubsection}{Abbreviations}{140}{subsubsection*.606}%
\contentsline {subsubsection}{Numbers and strings}{141}{subsubsection*.608}%
\contentsline {paragraph}{Number notations}{142}{paragraph*.610}%
\contentsline {paragraph}{String notations}{144}{paragraph*.628}%
\contentsline {subsubsection}{Tactic Notations}{149}{subsubsection*.647}%
\contentsline {subsection}{\numberline {2.2.5}Setting properties of a function's arguments}{150}{subsection.2.2.5}%
\contentsline {subsubsection}{Manual declaration of implicit arguments}{152}{subsubsection*.662}%
\contentsline {subsubsection}{Automatic declaration of implicit arguments}{153}{subsubsection*.664}%
\contentsline {subsubsection}{Renaming implicit arguments}{155}{subsubsection*.665}%
\contentsline {subsubsection}{Binding arguments to a scope}{155}{subsubsection*.666}%
\contentsline {subsubsection}{Effects of \sphinxstyleliteralintitle {\sphinxupquote {Arguments}} on unfolding}{156}{subsubsection*.667}%
\contentsline {subsubsection}{Bidirectionality hints}{157}{subsubsection*.668}%
\contentsline {subsection}{\numberline {2.2.6}Implicit Coercions}{158}{subsection.2.2.6}%
\contentsline {subsubsection}{General Presentation}{158}{subsubsection*.669}%
\contentsline {subsubsection}{Classes}{158}{subsubsection*.670}%
\contentsline {subsubsection}{Coercions}{159}{subsubsection*.672}%
\contentsline {subsubsection}{Identity Coercions}{159}{subsubsection*.673}%
\contentsline {subsubsection}{Inheritance Graph}{159}{subsubsection*.674}%
\contentsline {subsubsection}{Declaring Coercions}{160}{subsubsection*.675}%
\contentsline {subsubsection}{Displaying Available Coercions}{161}{subsubsection*.690}%
\contentsline {subsubsection}{Activating the Printing of Coercions}{161}{subsubsection*.695}%
\contentsline {subsubsection}{Classes as Records}{161}{subsubsection*.698}%
\contentsline {subsubsection}{Coercions and Sections}{161}{subsubsection*.699}%
\contentsline {subsubsection}{Coercions and Modules}{161}{subsubsection*.700}%
\contentsline {subsubsection}{Examples}{162}{subsubsection*.701}%
\contentsline {paragraph}{Coercion at function application}{162}{paragraph*.702}%
\contentsline {paragraph}{Coercion to a type}{164}{paragraph*.703}%
\contentsline {paragraph}{Coercion to a function}{165}{paragraph*.704}%
\contentsline {subsection}{\numberline {2.2.7}Typeclasses}{166}{subsection.2.2.7}%
\contentsline {subsubsection}{Class and Instance declarations}{166}{subsubsection*.705}%
\contentsline {subsubsection}{Binding classes}{167}{subsubsection*.706}%
\contentsline {subsubsection}{Parameterized Instances}{168}{subsubsection*.707}%
\contentsline {subsubsection}{Sections and contexts}{168}{subsubsection*.708}%
\contentsline {subsubsection}{Building hierarchies}{169}{subsubsection*.709}%
\contentsline {paragraph}{Superclasses}{169}{paragraph*.710}%
\contentsline {paragraph}{Substructures}{169}{paragraph*.711}%
\contentsline {subsubsection}{Summary of the commands}{170}{subsubsection*.713}%
\contentsline {paragraph}{Typeclasses Transparent, Typeclasses Opaque}{172}{paragraph*.728}%
\contentsline {paragraph}{Settings}{172}{paragraph*.731}%
\contentsline {paragraph}{Typeclasses eauto}{174}{paragraph*.743}%
\contentsline {subsection}{\numberline {2.2.8}Canonical Structures}{174}{subsection.2.2.8}%
\contentsline {subsubsection}{Declaration of canonical structures}{174}{subsubsection*.745}%
\contentsline {subsubsection}{Notation overloading}{176}{subsubsection*.750}%
\contentsline {paragraph}{Derived Canonical Structures}{178}{paragraph*.751}%
\contentsline {subsubsection}{Hierarchy of structures}{178}{subsubsection*.752}%
\contentsline {paragraph}{Compact declaration of Canonical Structures}{184}{paragraph*.753}%
\contentsline {subsection}{\numberline {2.2.9}Program}{186}{subsection.2.2.9}%
\contentsline {subsubsection}{Elaborating programs}{186}{subsubsection*.754}%
\contentsline {paragraph}{Syntactic control over equalities}{187}{paragraph*.760}%
\contentsline {paragraph}{Program Definition}{188}{paragraph*.761}%
\contentsline {paragraph}{Program Fixpoint}{188}{paragraph*.762}%
\contentsline {paragraph}{Program Lemma}{189}{paragraph*.763}%
\contentsline {subsubsection}{Solving obligations}{189}{subsubsection*.764}%
\contentsline {subsubsection}{Frequently Asked Questions}{190}{subsubsection*.776}%
\contentsline {subsection}{\numberline {2.2.10}Commands}{191}{subsection.2.2.10}%
\contentsline {subsubsection}{Displaying}{191}{subsubsection*.778}%
\contentsline {subsubsection}{Query commands}{191}{subsubsection*.788}%
\contentsline {subsubsection}{Requests to the environment}{199}{subsubsection*.811}%
\contentsline {subsubsection}{Printing flags}{200}{subsubsection*.823}%
\contentsline {subsubsection}{Loading files}{200}{subsubsection*.825}%
\contentsline {subsubsection}{Compiled files}{200}{subsubsection*.830}%
\contentsline {subsubsection}{Loadpath}{202}{subsubsection*.845}%
\contentsline {subsubsection}{Backtracking}{203}{subsubsection*.855}%
\contentsline {subsubsection}{Quitting and debugging}{203}{subsubsection*.862}%
\contentsline {subsubsection}{Controlling display}{204}{subsubsection*.872}%
\contentsline {subsubsection}{Printing constructions in full}{205}{subsubsection*.880}%
\contentsline {subsubsection}{Controlling the reduction strategies and the conversion algorithm}{205}{subsubsection*.882}%
\contentsline {subsubsection}{Controlling Typing Flags}{207}{subsubsection*.894}%
\contentsline {subsubsection}{Internal registration commands}{208}{subsubsection*.902}%
\contentsline {paragraph}{Exposing constants to OCaml libraries}{208}{paragraph*.903}%
\contentsline {paragraph}{Inlining hints for the fast reduction machines}{209}{paragraph*.905}%
\contentsline {paragraph}{Registering primitive operations}{209}{paragraph*.907}%
\contentsline {chapter}{\numberline {3}Proofs}{210}{chapter.3}%
\contentsline {section}{\numberline {3.1}Basic proof writing}{210}{section.3.1}%
\contentsline {subsection}{\numberline {3.1.1}Proof mode}{210}{subsection.3.1.1}%
\contentsline {subsubsection}{Proof State}{210}{subsubsection*.911}%
\contentsline {subsubsection}{Entering and exiting proof mode}{212}{subsubsection*.920}%
\contentsline {paragraph}{Proof using options}{214}{paragraph*.938}%
\contentsline {paragraph}{Name a set of section hypotheses for \sphinxstyleliteralintitle {\sphinxupquote {Proof using}}}{215}{paragraph*.941}%
\contentsline {subsubsection}{Proof modes}{215}{subsubsection*.945}%
\contentsline {subsubsection}{Navigation in the proof tree}{216}{subsubsection*.947}%
\contentsline {paragraph}{Bullets}{219}{paragraph*.961}%
\contentsline {subparagraph}{Mandatory Bullets}{223}{subparagraph*.966}%
\contentsline {subparagraph}{Set Bullet Behavior}{223}{subparagraph*.967}%
\contentsline {paragraph}{Modifying the order of goals}{223}{paragraph*.969}%
\contentsline {paragraph}{Postponing the proof of some goals}{226}{paragraph*.973}%
\contentsline {subsubsection}{Requesting information}{227}{subsubsection*.981}%
\contentsline {subsubsection}{Showing differences between proof steps}{228}{subsubsection*.995}%
\contentsline {paragraph}{How to enable diffs}{229}{paragraph*.996}%
\contentsline {paragraph}{How diffs are calculated}{229}{paragraph*.998}%
\contentsline {paragraph}{"Show Proof" differences}{230}{paragraph*.999}%
\contentsline {subsubsection}{Controlling proof mode}{230}{subsubsection*.1000}%
\contentsline {subsubsection}{Controlling memory usage}{231}{subsubsection*.1004}%
\contentsline {subsection}{\numberline {3.1.2}Tactics}{231}{subsection.3.1.2}%
\contentsline {subsubsection}{Common elements of tactics}{232}{subsubsection*.1010}%
\contentsline {paragraph}{Reserved keywords}{232}{paragraph*.1011}%
\contentsline {paragraph}{Invocation of tactics}{232}{paragraph*.1012}%
\contentsline {paragraph}{Bindings}{232}{paragraph*.1016}%
\contentsline {paragraph}{Intro patterns}{233}{paragraph*.1020}%
\contentsline {paragraph}{Occurrence clauses}{239}{paragraph*.1040}%
\contentsline {subsubsection}{Applying theorems}{240}{subsubsection*.1049}%
\contentsline {subsubsection}{Managing the local context}{247}{subsubsection*.1098}%
\contentsline {subsubsection}{Controlling the proof flow}{253}{subsubsection*.1139}%
\contentsline {subsubsection}{Case analysis and induction}{257}{subsubsection*.1165}%
\contentsline {subsubsection}{Checking properties of terms}{273}{subsubsection*.1210}%
\contentsline {subsubsection}{Equality}{273}{subsubsection*.1225}%
\contentsline {subsubsection}{Equality and inductive sets}{274}{subsubsection*.1232}%
\contentsline {subsubsection}{Classical tactics}{275}{subsubsection*.1240}%
\contentsline {subsubsection}{Delaying solving unification constraints}{275}{subsubsection*.1243}%
\contentsline {subsubsection}{Proof maintenance}{275}{subsubsection*.1246}%
\contentsline {subsubsection}{Performance\sphinxhyphen {}oriented tactic variants}{275}{subsubsection*.1249}%
\contentsline {subsection}{\numberline {3.1.3}Reasoning with equalities}{277}{subsection.3.1.3}%
\contentsline {subsubsection}{Rewriting with Leibniz and setoid equality}{277}{subsubsection*.1260}%
\contentsline {subsubsection}{Rewriting with definitional equality}{280}{subsubsection*.1289}%
\contentsline {subsubsection}{Performing computations}{282}{subsubsection*.1296}%
\contentsline {paragraph}{Conversion tactics applied to hypotheses}{291}{paragraph*.1328}%
\contentsline {subsection}{\numberline {3.1.4}The SSReflect proof language}{291}{subsection.3.1.4}%
\contentsline {subsubsection}{Introduction}{291}{subsubsection*.1329}%
\contentsline {paragraph}{Acknowledgments}{292}{paragraph*.1330}%
\contentsline {subsubsection}{Usage}{292}{subsubsection*.1331}%
\contentsline {paragraph}{Getting started}{292}{paragraph*.1332}%
\contentsline {paragraph}{Compatibility issues}{292}{paragraph*.1333}%
\contentsline {subsubsection}{Gallina extensions}{293}{subsubsection*.1336}%
\contentsline {paragraph}{Pattern assignment}{293}{paragraph*.1337}%
\contentsline {paragraph}{Pattern conditional}{294}{paragraph*.1340}%
\contentsline {paragraph}{Parametric polymorphism}{295}{paragraph*.1344}%
\contentsline {paragraph}{Anonymous arguments}{296}{paragraph*.1346}%
\contentsline {paragraph}{Wildcards}{296}{paragraph*.1348}%
\contentsline {paragraph}{Definitions}{297}{paragraph*.1349}%
\contentsline {paragraph}{Abbreviations}{298}{paragraph*.1351}%
\contentsline {subparagraph}{Matching}{299}{subparagraph*.1354}%
\contentsline {subparagraph}{Occurrence selection}{301}{subparagraph*.1355}%
\contentsline {paragraph}{Basic localization}{303}{paragraph*.1356}%
\contentsline {subsubsection}{Basic tactics}{304}{subsubsection*.1357}%
\contentsline {paragraph}{Bookkeeping}{304}{paragraph*.1358}%
\contentsline {paragraph}{The defective tactics}{307}{paragraph*.1359}%
\contentsline {subparagraph}{The move tactic.}{307}{subparagraph*.1360}%
\contentsline {subparagraph}{The case tactic}{308}{subparagraph*.1362}%
\contentsline {subparagraph}{The elim tactic}{308}{subparagraph*.1365}%
\contentsline {subparagraph}{The apply tactic}{309}{subparagraph*.1367}%
\contentsline {paragraph}{Discharge}{310}{paragraph*.1369}%
\contentsline {subparagraph}{Clear rules}{311}{subparagraph*.1373}%
\contentsline {subparagraph}{Matching for apply and exact}{311}{subparagraph*.1374}%
\contentsline {subparagraph}{The abstract tactic}{312}{subparagraph*.1375}%
\contentsline {paragraph}{Introduction in the context}{313}{paragraph*.1377}%
\contentsline {subparagraph}{Simplification items}{313}{subparagraph*.1384}%
\contentsline {subparagraph}{Views}{313}{subparagraph*.1385}%
\contentsline {subparagraph}{Intro patterns}{314}{subparagraph*.1386}%
\contentsline {subparagraph}{Clear switch}{315}{subparagraph*.1387}%
\contentsline {subparagraph}{Branching and destructuring}{316}{subparagraph*.1388}%
\contentsline {subparagraph}{Block introduction}{316}{subparagraph*.1389}%
\contentsline {paragraph}{Generation of equations}{317}{paragraph*.1390}%
\contentsline {paragraph}{Type families}{318}{paragraph*.1391}%
\contentsline {subsubsection}{Control flow}{321}{subsubsection*.1392}%
\contentsline {paragraph}{Indentation and bullets}{321}{paragraph*.1393}%
\contentsline {paragraph}{Terminators}{322}{paragraph*.1394}%
\contentsline {paragraph}{Selectors}{323}{paragraph*.1397}%
\contentsline {paragraph}{Iteration}{324}{paragraph*.1403}%
\contentsline {paragraph}{Localization}{325}{paragraph*.1406}%
\contentsline {paragraph}{Structure}{326}{paragraph*.1408}%
\contentsline {subparagraph}{The have tactic.}{326}{subparagraph*.1409}%
\contentsline {subparagraph}{Generating let in context entries with have}{330}{subparagraph*.1412}%
\contentsline {subparagraph}{The have tactic and typeclass resolution}{332}{subparagraph*.1413}%
\contentsline {subparagraph}{Variants: the suff and wlog tactics}{333}{subparagraph*.1415}%
\contentsline {subparagraph}{Advanced generalization}{336}{subparagraph*.1418}%
\contentsline {subsubsection}{Rewriting}{337}{subsubsection*.1419}%
\contentsline {paragraph}{An extended rewrite tactic}{337}{paragraph*.1420}%
\contentsline {paragraph}{Remarks and examples}{339}{paragraph*.1427}%
\contentsline {subparagraph}{Rewrite redex selection}{339}{subparagraph*.1428}%
\contentsline {subparagraph}{Chained rewrite steps}{340}{subparagraph*.1429}%
\contentsline {subparagraph}{Explicit redex switches are matched first}{341}{subparagraph*.1430}%
\contentsline {subparagraph}{Occurrence switches and redex switches}{341}{subparagraph*.1431}%
\contentsline {subparagraph}{Occurrence selection and repetition}{342}{subparagraph*.1432}%
\contentsline {subparagraph}{Multi\sphinxhyphen {}rule rewriting}{343}{subparagraph*.1433}%
\contentsline {subparagraph}{Wildcards vs abstractions}{346}{subparagraph*.1434}%
\contentsline {subparagraph}{When SSReflect rewrite fails on standard Coq licit rewrite}{347}{subparagraph*.1435}%
\contentsline {subparagraph}{Existential metavariables and rewriting}{348}{subparagraph*.1436}%
\contentsline {paragraph}{Rewriting under binders}{349}{paragraph*.1437}%
\contentsline {subparagraph}{The under tactic}{351}{subparagraph*.1438}%
\contentsline {subparagraph}{Interactive mode}{351}{subparagraph*.1441}%
\contentsline {subparagraph}{The over tactic}{352}{subparagraph*.1442}%
\contentsline {subparagraph}{One\sphinxhyphen {}liner mode}{353}{subparagraph*.1444}%
\contentsline {paragraph}{Locking, unlocking}{354}{paragraph*.1445}%
\contentsline {paragraph}{Congruence}{356}{paragraph*.1447}%
\contentsline {subsubsection}{Contextual patterns}{359}{subsubsection*.1449}%
\contentsline {paragraph}{Syntax}{359}{paragraph*.1450}%
\contentsline {paragraph}{Matching contextual patterns}{360}{paragraph*.1451}%
\contentsline {paragraph}{Examples}{360}{paragraph*.1452}%
\contentsline {subparagraph}{Contextual pattern in set and the : tactical}{360}{subparagraph*.1453}%
\contentsline {subparagraph}{Contextual patterns in rewrite}{361}{subparagraph*.1454}%
\contentsline {paragraph}{Patterns for recurrent contexts}{363}{paragraph*.1455}%
\contentsline {subsubsection}{Views and reflection}{363}{subsubsection*.1456}%
\contentsline {paragraph}{Interpreting eliminations}{363}{paragraph*.1457}%
\contentsline {paragraph}{Interpreting assumptions}{367}{paragraph*.1458}%
\contentsline {subparagraph}{Specializing assumptions}{370}{subparagraph*.1459}%
\contentsline {paragraph}{Interpreting goals}{370}{paragraph*.1460}%
\contentsline {paragraph}{Boolean reflection}{371}{paragraph*.1461}%
\contentsline {paragraph}{The reflect predicate}{372}{paragraph*.1462}%
\contentsline {paragraph}{General mechanism for interpreting goals and assumptions}{374}{paragraph*.1463}%
\contentsline {subparagraph}{Specializing assumptions}{374}{subparagraph*.1464}%
\contentsline {subparagraph}{Interpreting assumptions}{374}{subparagraph*.1465}%
\contentsline {paragraph}{Interpreting equivalences}{376}{paragraph*.1466}%
\contentsline {paragraph}{Declaring new Hint Views}{377}{paragraph*.1467}%
\contentsline {paragraph}{Multiple views}{378}{paragraph*.1470}%
\contentsline {subsubsection}{SSReflect searching tool}{379}{subsubsection*.1471}%
\contentsline {subsubsection}{Synopsis and Index}{380}{subsubsection*.1473}%
\contentsline {paragraph}{Parameters}{380}{paragraph*.1474}%
\contentsline {paragraph}{Items and switches}{380}{paragraph*.1479}%
\contentsline {paragraph}{Tactics}{381}{paragraph*.1498}%
\contentsline {paragraph}{Tacticals}{382}{paragraph*.1513}%
\contentsline {paragraph}{Commands}{382}{paragraph*.1521}%
\contentsline {paragraph}{Settings}{383}{paragraph*.1525}%
\contentsline {subsection}{\numberline {3.1.5}Detailed examples of tactics}{383}{subsection.3.1.5}%
\contentsline {subsubsection}{dependent induction}{383}{subsubsection*.1528}%
\contentsline {paragraph}{A larger example}{385}{paragraph*.1529}%
\contentsline {subsubsection}{autorewrite}{388}{subsubsection*.1530}%
\contentsline {subsection}{\numberline {3.1.6}Proof schemes}{390}{subsection.3.1.6}%
\contentsline {subsubsection}{Generation of induction principles with \sphinxstyleliteralintitle {\sphinxupquote {Scheme}}}{390}{subsubsection*.1531}%
\contentsline {paragraph}{Automatic declaration of schemes}{392}{paragraph*.1535}%
\contentsline {paragraph}{Combined Scheme}{392}{paragraph*.1542}%
\contentsline {subsubsection}{Generation of inversion principles with \sphinxstyleliteralintitle {\sphinxupquote {Derive}} \sphinxstyleliteralintitle {\sphinxupquote {Inversion}}}{393}{subsubsection*.1544}%
\contentsline {section}{\numberline {3.2}Automatic solvers and programmable tactics}{395}{section.3.2}%
\contentsline {subsection}{\numberline {3.2.1}Solvers for logic and equality}{395}{subsection.3.2.1}%
\contentsline {subsection}{\numberline {3.2.2}Omega: a (deprecated) solver for arithmetic}{399}{subsection.3.2.2}%
\contentsline {subsubsection}{Description of \sphinxstyleliteralintitle {\sphinxupquote {omega}}}{399}{subsubsection*.1566}%
\contentsline {subsubsection}{Arithmetical goals recognized by \sphinxstyleliteralintitle {\sphinxupquote {omega}}}{399}{subsubsection*.1568}%
\contentsline {subsubsection}{Messages from \sphinxstyleliteralintitle {\sphinxupquote {omega}}}{400}{subsubsection*.1569}%
\contentsline {subsubsection}{Using \sphinxstyleliteralintitle {\sphinxupquote {omega}}}{400}{subsubsection*.1578}%
\contentsline {subsubsection}{Options}{401}{subsubsection*.1579}%
\contentsline {subsubsection}{Technical data}{401}{subsubsection*.1584}%
\contentsline {paragraph}{Overview of the tactic}{401}{paragraph*.1585}%
\contentsline {paragraph}{Overview of the OMEGA decision procedure}{402}{paragraph*.1586}%
\contentsline {subsubsection}{Bugs}{402}{subsubsection*.1587}%
\contentsline {subsection}{\numberline {3.2.3}Micromega: solvers for arithmetic goals over ordered rings}{402}{subsection.3.2.3}%
\contentsline {subsubsection}{Short description of the tactics}{402}{subsubsection*.1588}%
\contentsline {subsubsection}{\sphinxstyleemphasis {Positivstellensatz} refutations}{403}{subsubsection*.1598}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {lra}}: a decision procedure for linear real and rational arithmetic}{404}{subsubsection*.1600}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {lia}}: a tactic for linear integer arithmetic}{404}{subsubsection*.1602}%
\contentsline {paragraph}{High level view of \sphinxstyleliteralintitle {\sphinxupquote {lia}}}{404}{paragraph*.1604}%
\contentsline {paragraph}{Cutting plane proofs}{404}{paragraph*.1605}%
\contentsline {paragraph}{Case split}{405}{paragraph*.1608}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {nra}}: a proof procedure for non\sphinxhyphen {}linear arithmetic}{405}{subsubsection*.1610}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {nia}}: a proof procedure for non\sphinxhyphen {}linear integer arithmetic}{405}{subsubsection*.1612}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {psatz}}: a proof procedure for non\sphinxhyphen {}linear arithmetic}{405}{subsubsection*.1614}%
\contentsline {subsubsection}{\sphinxstyleliteralintitle {\sphinxupquote {zify}}: pre\sphinxhyphen {}processing of arithmetic goals}{406}{subsubsection*.1616}%
\contentsline {subsection}{\numberline {3.2.4}ring and field: solvers for polynomial and rational equations}{407}{subsection.3.2.4}%
\contentsline {subsubsection}{What does this tactic do?}{407}{subsubsection*.1634}%
\contentsline {subsubsection}{The variables map}{407}{subsubsection*.1635}%
\contentsline {subsubsection}{Is it automatic?}{408}{subsubsection*.1636}%
\contentsline {subsubsection}{Concrete usage in Coq}{408}{subsubsection*.1637}%
\contentsline {subsubsection}{Adding a ring structure}{410}{subsubsection*.1645}%
\contentsline {subsubsection}{How does it work?}{412}{subsubsection*.1651}%
\contentsline {subsubsection}{Dealing with fields}{413}{subsubsection*.1652}%
\contentsline {subsubsection}{Adding a new field structure}{415}{subsubsection*.1656}%
\contentsline {subsubsection}{History of ring}{416}{subsubsection*.1659}%
\contentsline {subsubsection}{Discussion}{417}{subsubsection*.1660}%
\contentsline {subsection}{\numberline {3.2.5}Nsatz: a solver for equalities in integral domains}{418}{subsection.3.2.5}%
\contentsline {subsubsection}{More about \sphinxstyleliteralintitle {\sphinxupquote {nsatz}}}{419}{subsubsection*.1662}%
\contentsline {subsection}{\numberline {3.2.6}Programmable proof search}{419}{subsection.3.2.6}%
\contentsline {subsubsection}{The hints databases for auto and eauto}{422}{subsubsection*.1686}%
\contentsline {subsubsection}{Creating Hint databases}{422}{subsubsection*.1687}%
\contentsline {subsubsection}{Creating Hints}{422}{subsubsection*.1689}%
\contentsline {subsubsection}{Hint databases defined in the Coq standard library}{426}{subsubsection*.1713}%
\contentsline {subsubsection}{Hint locality}{426}{subsubsection*.1714}%
\contentsline {subsubsection}{Setting implicit automation tactics}{427}{subsubsection*.1716}%
\contentsline {subsection}{\numberline {3.2.7}Generalized rewriting}{427}{subsection.3.2.7}%
\contentsline {subsubsection}{Introduction to generalized rewriting}{428}{subsubsection*.1718}%
\contentsline {paragraph}{Relations and morphisms}{428}{paragraph*.1719}%
\contentsline {paragraph}{Adding new relations and morphisms}{429}{paragraph*.1720}%
\contentsline {paragraph}{Rewriting and non reflexive relations}{432}{paragraph*.1724}%
\contentsline {paragraph}{Rewriting and non symmetric relations}{432}{paragraph*.1725}%
\contentsline {paragraph}{Rewriting in ambiguous setoid contexts}{433}{paragraph*.1726}%
\contentsline {subsubsection}{Commands and tactics}{433}{subsubsection*.1727}%
\contentsline {paragraph}{First class setoids and morphisms}{433}{paragraph*.1728}%
\contentsline {paragraph}{Tactics enabled on user provided relations}{434}{paragraph*.1729}%
\contentsline {paragraph}{Printing relations and morphisms}{435}{paragraph*.1737}%
\contentsline {paragraph}{Deprecated syntax and backward incompatibilities}{435}{paragraph*.1738}%
\contentsline {subsubsection}{Extensions}{436}{subsubsection*.1743}%
\contentsline {paragraph}{Rewriting under binders}{436}{paragraph*.1744}%
\contentsline {paragraph}{Subrelations}{437}{paragraph*.1745}%
\contentsline {paragraph}{Constant unfolding}{437}{paragraph*.1746}%
\contentsline {subsubsection}{Strategies for rewriting}{437}{subsubsection*.1747}%
\contentsline {paragraph}{Usage}{437}{paragraph*.1748}%
\contentsline {paragraph}{Definitions}{437}{paragraph*.1753}%
\contentsline {section}{\numberline {3.3}Creating new tactics}{439}{section.3.3}%
\contentsline {subsection}{\numberline {3.3.1}Ltac}{440}{subsection.3.3.1}%
\contentsline {subsubsection}{Syntax}{440}{subsubsection*.1756}%
\contentsline {subsubsection}{Semantics}{441}{subsubsection*.1774}%
\contentsline {paragraph}{Types of values}{441}{paragraph*.1775}%
\contentsline {paragraph}{Syntactic values}{441}{paragraph*.1776}%
\contentsline {paragraph}{Tactics in terms}{442}{paragraph*.1779}%
\contentsline {paragraph}{Substitution}{442}{paragraph*.1781}%
\contentsline {paragraph}{Sequence: ;}{442}{paragraph*.1782}%
\contentsline {paragraph}{Local application of tactics: {[}> ... {]}}{443}{paragraph*.1784}%
\contentsline {paragraph}{Goal selectors}{443}{paragraph*.1789}%
\contentsline {paragraph}{Processing multiple goals}{445}{paragraph*.1797}%
\contentsline {paragraph}{Do loop}{445}{paragraph*.1798}%
\contentsline {paragraph}{Repeat loop}{445}{paragraph*.1800}%
\contentsline {paragraph}{Catching errors: try}{446}{paragraph*.1802}%
\contentsline {paragraph}{Detecting progress}{446}{paragraph*.1804}%
\contentsline {paragraph}{Branching and backtracking}{446}{paragraph*.1807}%
\contentsline {paragraph}{Branching with backtracking: +}{447}{paragraph*.1812}%
\contentsline {paragraph}{First tactic to succeed}{448}{paragraph*.1814}%
\contentsline {paragraph}{Solving}{448}{paragraph*.1817}%
\contentsline {paragraph}{First tactic to make progress: ||}{449}{paragraph*.1819}%
\contentsline {paragraph}{Conditional branching: tryif}{449}{paragraph*.1821}%
\contentsline {paragraph}{Soft cut: once}{449}{paragraph*.1823}%
\contentsline {paragraph}{Checking for a single success: exactly\_once}{449}{paragraph*.1825}%
\contentsline {paragraph}{Checking for failure: assert\_fails}{450}{paragraph*.1828}%
\contentsline {paragraph}{Checking for success: assert\_succeeds}{450}{paragraph*.1831}%
\contentsline {paragraph}{Print/identity tactic: idtac}{450}{paragraph*.1834}%
\contentsline {paragraph}{Failing}{451}{paragraph*.1836}%
\contentsline {paragraph}{Timeout}{453}{paragraph*.1842}%
\contentsline {paragraph}{Timing a tactic}{453}{paragraph*.1844}%
\contentsline {paragraph}{Timing a tactic that evaluates to a term: time\_constr}{454}{paragraph*.1846}%
\contentsline {paragraph}{Local definitions: let}{455}{paragraph*.1850}%
\contentsline {paragraph}{Function construction and application}{455}{paragraph*.1853}%
\contentsline {paragraph}{Pattern matching on terms: match}{455}{paragraph*.1855}%
\contentsline {paragraph}{Pattern matching on goals and hypotheses: match goal}{458}{paragraph*.1870}%
\contentsline {paragraph}{Filling a term context}{461}{paragraph*.1880}%
\contentsline {paragraph}{Generating fresh hypothesis names}{462}{paragraph*.1884}%
\contentsline {paragraph}{Computing in a term: eval}{462}{paragraph*.1886}%
\contentsline {paragraph}{Getting the type of a term}{463}{paragraph*.1888}%
\contentsline {paragraph}{Manipulating untyped terms: type\_term}{463}{paragraph*.1890}%
\contentsline {paragraph}{Counting goals: numgoals}{463}{paragraph*.1892}%
\contentsline {paragraph}{Testing boolean expressions: guard}{463}{paragraph*.1894}%
\contentsline {paragraph}{Proving a subgoal as a separate lemma: abstract}{464}{paragraph*.1899}%
\contentsline {subsubsection}{Tactic toplevel definitions}{465}{subsubsection*.1903}%
\contentsline {paragraph}{Defining \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$ symbols}{465}{paragraph*.1904}%
\contentsline {paragraph}{Printing \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$ tactics}{465}{paragraph*.1909}%
\contentsline {subsubsection}{Examples of using \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$}{465}{subsubsection*.1912}%
\contentsline {paragraph}{Proof that the natural numbers have at least two elements}{465}{paragraph*.1913}%
\contentsline {paragraph}{Proving that a list is a permutation of a second list}{467}{paragraph*.1914}%
\contentsline {paragraph}{Deciding intuitionistic propositional logic}{469}{paragraph*.1915}%
\contentsline {paragraph}{Deciding type isomorphisms}{470}{paragraph*.1916}%
\contentsline {subsubsection}{Debugging \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$ tactics}{472}{subsubsection*.1917}%
\contentsline {paragraph}{Backtraces}{472}{paragraph*.1918}%
\contentsline {paragraph}{Tracing execution}{472}{paragraph*.1920}%
\contentsline {paragraph}{Interactive debugger}{473}{paragraph*.1923}%
\contentsline {paragraph}{Profiling \sphinxstyleliteralintitle {\sphinxupquote {L}}$_{\text {tac}}$ tactics}{473}{paragraph*.1927}%
\contentsline {paragraph}{Run\sphinxhyphen {}time optimization tactic}{476}{paragraph*.1936}%
\contentsline {subsection}{\numberline {3.3.2}Ltac2}{476}{subsection.3.3.2}%
\contentsline {subsubsection}{General design}{477}{subsubsection*.1939}%
\contentsline {subsubsection}{ML component}{477}{subsubsection*.1940}%
\contentsline {paragraph}{Overview}{477}{paragraph*.1941}%
\contentsline {paragraph}{Type Syntax}{478}{paragraph*.1942}%
\contentsline {paragraph}{Type declarations}{478}{paragraph*.1948}%
\contentsline {paragraph}{APIs}{479}{paragraph*.1956}%
\contentsline {paragraph}{Term Syntax}{479}{paragraph*.1957}%
\contentsline {paragraph}{Ltac2 Definitions}{480}{paragraph*.1968}%
\contentsline {paragraph}{Reduction}{481}{paragraph*.1972}%
\contentsline {paragraph}{Typing}{481}{paragraph*.1973}%
\contentsline {paragraph}{Effects}{481}{paragraph*.1974}%
\contentsline {subparagraph}{Standard IO}{482}{subparagraph*.1975}%
\contentsline {subparagraph}{Fatal errors}{482}{subparagraph*.1976}%
\contentsline {subparagraph}{Backtracking}{482}{subparagraph*.1977}%
\contentsline {subparagraph}{Goals}{483}{subparagraph*.1978}%
\contentsline {subsubsection}{Meta\sphinxhyphen {}programming}{483}{subsubsection*.1979}%
\contentsline {paragraph}{Overview}{483}{paragraph*.1980}%
\contentsline {paragraph}{Quotations}{483}{paragraph*.1981}%
\contentsline {subparagraph}{Built\sphinxhyphen {}in quotations}{483}{subparagraph*.1982}%
\contentsline {subparagraph}{Strict vs. non\sphinxhyphen {}strict mode}{484}{subparagraph*.1985}%
\contentsline {paragraph}{Term Antiquotations}{484}{paragraph*.1986}%
\contentsline {subparagraph}{Syntax}{484}{subparagraph*.1987}%
\contentsline {subparagraph}{Semantics}{484}{subparagraph*.1989}%
\contentsline {subparagraph}{Static semantics}{485}{subparagraph*.1990}%
\contentsline {subparagraph}{Dynamic semantics}{486}{subparagraph*.1991}%
\contentsline {paragraph}{Match over terms}{486}{paragraph*.1993}%
\contentsline {paragraph}{Match over goals}{489}{paragraph*.2006}%
\contentsline {paragraph}{Match on values}{492}{paragraph*.2017}%
\contentsline {subsubsection}{Notations}{492}{subsubsection*.2024}%
\contentsline {paragraph}{Abbreviations}{493}{paragraph*.2026}%
\contentsline {paragraph}{Defining tactics}{494}{paragraph*.2028}%
\contentsline {paragraph}{Syntactic classes}{494}{paragraph*.2029}%
\contentsline {subsubsection}{Evaluation}{497}{subsubsection*.2071}%
\contentsline {subsubsection}{Debug}{497}{subsubsection*.2073}%
\contentsline {subsubsection}{Compatibility layer with Ltac1}{497}{subsubsection*.2075}%
\contentsline {paragraph}{Ltac1 from Ltac2}{497}{paragraph*.2076}%
\contentsline {subparagraph}{Simple API}{497}{subparagraph*.2077}%
\contentsline {subparagraph}{Low\sphinxhyphen {}level API}{497}{subparagraph*.2078}%
\contentsline {paragraph}{Ltac2 from Ltac1}{498}{paragraph*.2079}%
\contentsline {paragraph}{Switching between Ltac languages}{499}{paragraph*.2081}%
\contentsline {subsubsection}{Transition from Ltac1}{499}{subsubsection*.2082}%
\contentsline {paragraph}{Syntax changes}{499}{paragraph*.2083}%
\contentsline {paragraph}{Tactic delay}{499}{paragraph*.2084}%
\contentsline {paragraph}{Variable binding}{500}{paragraph*.2085}%
\contentsline {subparagraph}{In Ltac expressions}{500}{subparagraph*.2086}%
\contentsline {subparagraph}{In quotations}{500}{subparagraph*.2088}%
\contentsline {paragraph}{Exception catching}{500}{paragraph*.2090}%
\contentsline {chapter}{\numberline {4}Using Coq}{501}{chapter.4}%
\contentsline {section}{\numberline {4.1}Libraries and plugins}{501}{section.4.1}%
\contentsline {subsection}{\numberline {4.1.1}The Coq library}{501}{subsection.4.1.1}%
\contentsline {subsubsection}{The prelude}{501}{subsubsection*.2093}%
\contentsline {paragraph}{Notations}{502}{paragraph*.2094}%
\contentsline {paragraph}{Logic}{502}{paragraph*.2095}%
\contentsline {subparagraph}{Propositional Connectives}{503}{subparagraph*.2097}%
\contentsline {subparagraph}{Quantifiers}{503}{subparagraph*.2098}%
\contentsline {subparagraph}{Equality}{504}{subparagraph*.2099}%
\contentsline {subparagraph}{Lemmas}{504}{subparagraph*.2100}%
\contentsline {paragraph}{Datatypes}{505}{paragraph*.2102}%
\contentsline {subparagraph}{Programming}{505}{subparagraph*.2104}%
\contentsline {paragraph}{Specification}{506}{paragraph*.2107}%
\contentsline {paragraph}{Basic Arithmetic}{507}{paragraph*.2115}%
\contentsline {paragraph}{Well\sphinxhyphen {}founded recursion}{508}{paragraph*.2117}%
\contentsline {paragraph}{Accessing the Type level}{509}{paragraph*.2120}%
\contentsline {paragraph}{Tactics}{509}{paragraph*.2123}%
\contentsline {subsubsection}{The standard library}{510}{subsubsection*.2124}%
\contentsline {paragraph}{Survey}{510}{paragraph*.2125}%
\contentsline {paragraph}{Peano’s arithmetic (nat)}{510}{paragraph*.2126}%
\contentsline {paragraph}{Notations for integer arithmetic}{511}{paragraph*.2127}%
\contentsline {paragraph}{Real numbers library}{512}{paragraph*.2128}%
\contentsline {subparagraph}{Notations for real numbers}{512}{subparagraph*.2129}%
\contentsline {subparagraph}{Some tactics for real numbers}{513}{subparagraph*.2130}%
\contentsline {paragraph}{List library}{514}{paragraph*.2134}%
\contentsline {paragraph}{Floats library}{515}{paragraph*.2135}%
\contentsline {subsubsection}{Users’ contributions}{517}{subsubsection*.2138}%
\contentsline {subsection}{\numberline {4.1.2}Program extraction}{517}{subsection.4.1.2}%
\contentsline {subsubsection}{Generating ML Code}{518}{subsubsection*.2139}%
\contentsline {subsubsection}{Extraction Options}{519}{subsubsection*.2147}%
\contentsline {paragraph}{Setting the target language}{519}{paragraph*.2148}%
\contentsline {paragraph}{Inlining and optimizations}{519}{paragraph*.2151}%
\contentsline {paragraph}{Extra elimination of useless arguments}{520}{paragraph*.2160}%
\contentsline {paragraph}{Realizing axioms}{520}{paragraph*.2163}%
\contentsline {paragraph}{Realizing inductive types}{521}{paragraph*.2166}%
\contentsline {paragraph}{Avoiding conflicts with existing filenames}{522}{paragraph*.2168}%
\contentsline {paragraph}{Additional settings}{523}{paragraph*.2172}%
\contentsline {subsubsection}{Differences between Coq and ML type systems}{523}{subsubsection*.2176}%
\contentsline {subsubsection}{Some examples}{524}{subsubsection*.2177}%
\contentsline {paragraph}{A detailed example: Euclidean division}{524}{paragraph*.2178}%
\contentsline {paragraph}{Extraction's horror museum}{526}{paragraph*.2179}%
\contentsline {paragraph}{Users' Contributions}{526}{paragraph*.2180}%
\contentsline {subsection}{\numberline {4.1.3}Program derivation}{527}{subsection.4.1.3}%
\contentsline {subsection}{\numberline {4.1.4}Functional induction}{528}{subsection.4.1.4}%
\contentsline {subsubsection}{Advanced recursive functions}{528}{subsubsection*.2182}%
\contentsline {subsubsection}{Tactics}{531}{subsubsection*.2190}%
\contentsline {subsubsection}{Generation of induction principles with \sphinxstyleliteralintitle {\sphinxupquote {Functional}} \sphinxstyleliteralintitle {\sphinxupquote {Scheme}}}{532}{subsubsection*.2197}%
\contentsline {subsection}{\numberline {4.1.5}Writing Coq libraries and plugins}{537}{subsection.4.1.5}%
\contentsline {subsubsection}{Deprecating library objects or tactics}{537}{subsubsection*.2200}%
\contentsline {section}{\numberline {4.2}Command\sphinxhyphen {}line and graphical tools}{538}{section.4.2}%
\contentsline {subsection}{\numberline {4.2.1}The Coq commands}{538}{subsection.4.2.1}%
\contentsline {subsubsection}{Interactive use (coqtop)}{538}{subsubsection*.2206}%
\contentsline {subsubsection}{Batch compilation (coqc)}{539}{subsubsection*.2208}%
\contentsline {subsubsection}{Customization at launch time}{539}{subsubsection*.2209}%
\contentsline {paragraph}{By resource file}{539}{paragraph*.2210}%
\contentsline {paragraph}{By environment variables}{539}{paragraph*.2211}%
\contentsline {paragraph}{By command line options}{540}{paragraph*.2214}%
\contentsline {subsubsection}{Compiled interfaces (produced using \sphinxstyleliteralintitle {\sphinxupquote {\sphinxhyphen {}vos}})}{543}{subsubsection*.2217}%
\contentsline {subsubsection}{Compiled libraries checker (coqchk)}{544}{subsubsection*.2219}%
\contentsline {subsection}{\numberline {4.2.2}Utilities}{545}{subsection.4.2.2}%
\contentsline {subsubsection}{Using Coq as a library}{545}{subsubsection*.2220}%
\contentsline {subsubsection}{Building a Coq project}{545}{subsubsection*.2221}%
\contentsline {paragraph}{Building a Coq project with coq\_makefile}{546}{paragraph*.2222}%
\contentsline {subparagraph}{CoqMakefile.local}{547}{subparagraph*.2223}%
\contentsline {subparagraph}{Timing targets and performance testing}{548}{subparagraph*.2224}%
\contentsline {subparagraph}{Building a subset of the targets with \sphinxstyleliteralintitle {\sphinxupquote {\sphinxhyphen {}j}}}{552}{subparagraph*.2225}%
\contentsline {subparagraph}{Precompiling for \sphinxstyleliteralintitle {\sphinxupquote {native\_compute}}}{553}{subparagraph*.2226}%
\contentsline {paragraph}{Building a Coq project with Dune}{553}{paragraph*.2227}%
\contentsline {subsubsection}{Computing Module dependencies}{554}{subsubsection*.2228}%
\contentsline {subsubsection}{Embedded Coq phrases inside LaTeX documents}{555}{subsubsection*.2229}%
\contentsline {subsubsection}{Man pages}{555}{subsubsection*.2230}%
\contentsline {subsection}{\numberline {4.2.3}Documenting Coq files with coqdoc}{555}{subsection.4.2.3}%
\contentsline {subsubsection}{Principles}{555}{subsubsection*.2231}%
\contentsline {paragraph}{Coq material inside documentation.}{555}{paragraph*.2232}%
\contentsline {paragraph}{Pretty\sphinxhyphen {}printing.}{556}{paragraph*.2233}%
\contentsline {paragraph}{Sections}{556}{paragraph*.2234}%
\contentsline {paragraph}{Lists.}{557}{paragraph*.2235}%
\contentsline {paragraph}{Rules.}{557}{paragraph*.2236}%
\contentsline {paragraph}{Emphasis.}{557}{paragraph*.2237}%
\contentsline {paragraph}{Escaping to LaTeX and HTML.}{557}{paragraph*.2238}%
\contentsline {paragraph}{Verbatim}{558}{paragraph*.2239}%
\contentsline {paragraph}{Hyperlinks}{558}{paragraph*.2240}%
\contentsline {paragraph}{Hiding / Showing parts of the source}{558}{paragraph*.2241}%
\contentsline {subsubsection}{Usage}{559}{subsubsection*.2242}%
\contentsline {paragraph}{Command line options}{559}{paragraph*.2243}%
\contentsline {subsubsection}{The coqdoc LaTeX style file}{562}{subsubsection*.2244}%
\contentsline {subsection}{\numberline {4.2.4}Coq Integrated Development Environment}{562}{subsection.4.2.4}%
\contentsline {subsubsection}{Managing files and buffers, basic editing}{563}{subsubsection*.2246}%
\contentsline {subsubsection}{Interactive navigation into Coq scripts}{564}{subsubsection*.2247}%
\contentsline {subsubsection}{Commands and templates}{565}{subsubsection*.2248}%
\contentsline {subsubsection}{Queries}{565}{subsubsection*.2249}%
\contentsline {subsubsection}{Compilation}{566}{subsubsection*.2250}%
\contentsline {subsubsection}{Customizations}{566}{subsubsection*.2251}%
\contentsline {subsubsection}{Using Unicode symbols}{567}{subsubsection*.2252}%
\contentsline {paragraph}{Displaying Unicode symbols}{567}{paragraph*.2253}%
\contentsline {paragraph}{Bindings for input of Unicode symbols}{567}{paragraph*.2254}%
\contentsline {paragraph}{Adding custom bindings}{567}{paragraph*.2255}%
\contentsline {paragraph}{Character encoding for saved files}{568}{paragraph*.2256}%
\contentsline {subsection}{\numberline {4.2.5}Asynchronous and Parallel Proof Processing}{568}{subsection.4.2.5}%
\contentsline {subsubsection}{Proof annotations}{569}{subsubsection*.2257}%
\contentsline {paragraph}{Automatic suggestion of proof annotations}{569}{paragraph*.2258}%
\contentsline {subsubsection}{Proof blocks and error resilience}{569}{subsubsection*.2259}%
\contentsline {paragraph}{Caveats}{570}{paragraph*.2260}%
\contentsline {subsubsection}{Interactive mode}{570}{subsubsection*.2261}%
\contentsline {paragraph}{Caveats}{570}{paragraph*.2262}%
\contentsline {subsubsection}{Batch mode}{571}{subsubsection*.2263}%
\contentsline {subsubsection}{Limiting the number of parallel workers}{572}{subsubsection*.2264}%
\contentsline {chapter}{\numberline {5}Appendix}{573}{chapter.5}%
\contentsline {section}{\numberline {5.1}History and recent changes}{573}{section.5.1}%
\contentsline {subsection}{\numberline {5.1.1}Early history of Coq}{573}{subsection.5.1.1}%
\contentsline {subsubsection}{Historical roots}{573}{subsubsection*.2265}%
\contentsline {subsubsection}{Versions 1 to 5}{574}{subsubsection*.2266}%
\contentsline {paragraph}{Version 1}{576}{paragraph*.2267}%
\contentsline {paragraph}{Version 2}{576}{paragraph*.2268}%
\contentsline {paragraph}{Version 3}{577}{paragraph*.2269}%
\contentsline {paragraph}{Version 4}{577}{paragraph*.2270}%
\contentsline {paragraph}{Version 5}{579}{paragraph*.2271}%
\contentsline {subsubsection}{Versions 6}{579}{subsubsection*.2272}%
\contentsline {paragraph}{Version 6.1}{579}{paragraph*.2273}%
\contentsline {paragraph}{Version 6.2}{580}{paragraph*.2274}%
\contentsline {paragraph}{Version 6.3}{580}{paragraph*.2275}%
\contentsline {subsubsection}{Versions 7}{581}{subsubsection*.2276}%
\contentsline {paragraph}{Summary of changes}{581}{paragraph*.2277}%
\contentsline {paragraph}{Details of changes in 7.0 and 7.1}{582}{paragraph*.2278}%
\contentsline {subparagraph}{Main novelties}{582}{subparagraph*.2279}%
\contentsline {subparagraph}{Details of changes}{583}{subparagraph*.2280}%
\contentsline {subparagraph}{Language: new "let\sphinxhyphen {}in" construction}{583}{subparagraph*.2281}%
\contentsline {subparagraph}{Language: long names}{583}{subparagraph*.2282}%
\contentsline {subparagraph}{Language: miscellaneous}{583}{subparagraph*.2283}%
\contentsline {subparagraph}{Language: Cases}{583}{subparagraph*.2284}%
\contentsline {subparagraph}{Reduction}{584}{subparagraph*.2285}%
\contentsline {subparagraph}{New tactics}{584}{subparagraph*.2286}%
\contentsline {subparagraph}{Changes in existing tactics}{584}{subparagraph*.2287}%
\contentsline {subparagraph}{Efficiency}{585}{subparagraph*.2288}%
\contentsline {subparagraph}{Concrete syntax of constructions}{585}{subparagraph*.2289}%
\contentsline {subparagraph}{Parsing and grammar extension}{585}{subparagraph*.2290}%
\contentsline {subparagraph}{New commands}{586}{subparagraph*.2291}%
\contentsline {subparagraph}{Changes in existing commands}{586}{subparagraph*.2292}%
\contentsline {subparagraph}{Tools}{586}{subparagraph*.2293}%
\contentsline {subparagraph}{Extraction}{587}{subparagraph*.2294}%
\contentsline {subparagraph}{Standard library}{587}{subparagraph*.2295}%
\contentsline {subparagraph}{New user contributions}{587}{subparagraph*.2296}%
\contentsline {paragraph}{Details of changes in 7.2}{587}{paragraph*.2297}%
\contentsline {paragraph}{Details of changes in 7.3}{589}{paragraph*.2298}%
\contentsline {subparagraph}{Changes in 7.3.1}{590}{subparagraph*.2299}%
\contentsline {paragraph}{Details of changes in 7.4}{591}{paragraph*.2300}%
\contentsline {subsection}{\numberline {5.1.2}Recent changes}{593}{subsection.5.1.2}%
\contentsline {subsubsection}{Version 8.13}{593}{subsubsection*.2301}%
\contentsline {paragraph}{Summary of changes}{593}{paragraph*.2302}%
\contentsline {paragraph}{Changes in 8.13+beta1}{595}{paragraph*.2303}%
\contentsline {subparagraph}{Kernel}{595}{subparagraph*.2315}%
\contentsline {subparagraph}{Specification language, type inference}{596}{subparagraph*.2318}%
\contentsline {subparagraph}{Notations}{597}{subparagraph*.2323}%
\contentsline {subparagraph}{Tactics}{599}{subparagraph*.2324}%
\contentsline {subparagraph}{Tactic language}{600}{subparagraph*.2325}%
\contentsline {subparagraph}{SSReflect}{600}{subparagraph*.2326}%
\contentsline {subparagraph}{Commands and options}{600}{subparagraph*.2327}%
\contentsline {subparagraph}{Tools}{601}{subparagraph*.2329}%
\contentsline {subparagraph}{CoqIDE}{601}{subparagraph*.2330}%
\contentsline {subparagraph}{Standard library}{602}{subparagraph*.2331}%
\contentsline {subparagraph}{Infrastructure and dependencies}{603}{subparagraph*.2332}%
\contentsline {paragraph}{Changes in 8.13.0}{603}{paragraph*.2333}%
\contentsline {subparagraph}{Commands and options}{603}{subparagraph*.2334}%
\contentsline {paragraph}{Changes in 8.13.1}{603}{paragraph*.2335}%
\contentsline {subparagraph}{Kernel}{603}{subparagraph*.2336}%
\contentsline {subparagraph}{CoqIDE}{603}{subparagraph*.2337}%
\contentsline {subsubsection}{Version 8.12}{603}{subsubsection*.2338}%
\contentsline {paragraph}{Summary of changes}{603}{paragraph*.2339}%
\contentsline {paragraph}{Changes in 8.12+beta1}{605}{paragraph*.2340}%
\contentsline {subparagraph}{Kernel}{605}{subparagraph*.2356}%
\contentsline {subparagraph}{Specification language, type inference}{606}{subparagraph*.2357}%
\contentsline {subparagraph}{Notations}{607}{subparagraph*.2361}%
\contentsline {subparagraph}{Tactics}{608}{subparagraph*.2362}%
\contentsline {subparagraph}{Tactic language}{610}{subparagraph*.2363}%
\contentsline {subparagraph}{SSReflect}{611}{subparagraph*.2364}%
\contentsline {subparagraph}{Flags, options and attributes}{611}{subparagraph*.2366}%
\contentsline {subparagraph}{Commands}{612}{subparagraph*.2367}%
\contentsline {subparagraph}{Tools}{613}{subparagraph*.2370}%
\contentsline {subparagraph}{CoqIDE}{615}{subparagraph*.2371}%
\contentsline {subparagraph}{Standard library}{615}{subparagraph*.2372}%
\contentsline {subparagraph}{Reals library}{618}{subparagraph*.2373}%
\contentsline {subparagraph}{Extraction}{619}{subparagraph*.2374}%
\contentsline {subparagraph}{Reference manual}{619}{subparagraph*.2375}%
\contentsline {subparagraph}{Infrastructure and dependencies}{620}{subparagraph*.2376}%
\contentsline {paragraph}{Changes in 8.12.0}{620}{paragraph*.2377}%
\contentsline {paragraph}{Changes in 8.12.1}{621}{paragraph*.2378}%
\contentsline {paragraph}{Changes in 8.12.2}{623}{paragraph*.2379}%
\contentsline {subsubsection}{Version 8.11}{623}{subsubsection*.2380}%
\contentsline {paragraph}{Summary of changes}{623}{paragraph*.2381}%
\contentsline {paragraph}{Changes in 8.11+beta1}{624}{paragraph*.2382}%
\contentsline {paragraph}{Changes in 8.11.0}{630}{paragraph*.2393}%
\contentsline {paragraph}{Changes in 8.11.1}{632}{paragraph*.2394}%
\contentsline {paragraph}{Changes in 8.11.2}{633}{paragraph*.2395}%
\contentsline {subsubsection}{Version 8.10}{633}{subsubsection*.2396}%
\contentsline {paragraph}{Summary of changes}{633}{paragraph*.2397}%
\contentsline {paragraph}{Other changes in 8.10+beta1}{636}{paragraph*.2398}%
\contentsline {paragraph}{Changes in 8.10+beta2}{642}{paragraph*.2399}%
\contentsline {paragraph}{Changes in 8.10+beta3}{642}{paragraph*.2400}%
\contentsline {paragraph}{Changes in 8.10.0}{643}{paragraph*.2401}%
\contentsline {paragraph}{Changes in 8.10.1}{643}{paragraph*.2402}%
\contentsline {paragraph}{Changes in 8.10.2}{644}{paragraph*.2403}%
\contentsline {subsubsection}{Version 8.9}{645}{subsubsection*.2404}%
\contentsline {paragraph}{Summary of changes}{645}{paragraph*.2405}%
\contentsline {paragraph}{Details of changes in 8.9+beta1}{647}{paragraph*.2406}%
\contentsline {paragraph}{Changes in 8.8.0}{649}{paragraph*.2407}%
\contentsline {paragraph}{Changes in 8.8.1}{650}{paragraph*.2408}%
\contentsline {subsubsection}{Version 8.8}{650}{subsubsection*.2409}%
\contentsline {paragraph}{Summary of changes}{650}{paragraph*.2410}%
\contentsline {paragraph}{Details of changes in 8.8+beta1}{651}{paragraph*.2411}%
\contentsline {paragraph}{Details of changes in 8.8.0}{654}{paragraph*.2412}%
\contentsline {paragraph}{Details of changes in 8.8.1}{654}{paragraph*.2413}%
\contentsline {paragraph}{Details of changes in 8.8.2}{655}{paragraph*.2414}%
\contentsline {subsubsection}{Version 8.7}{655}{subsubsection*.2415}%
\contentsline {paragraph}{Summary of changes}{655}{paragraph*.2416}%
\contentsline {paragraph}{Potential compatibility issues}{657}{paragraph*.2417}%
\contentsline {paragraph}{Details of changes in 8.7+beta1}{657}{paragraph*.2418}%
\contentsline {paragraph}{Details of changes in 8.7+beta2}{659}{paragraph*.2419}%
\contentsline {paragraph}{Details of changes in 8.7.0}{660}{paragraph*.2420}%
\contentsline {paragraph}{Details of changes in 8.7.1}{660}{paragraph*.2421}%
\contentsline {paragraph}{Details of changes in 8.7.2}{660}{paragraph*.2422}%
\contentsline {subsubsection}{Version 8.6}{660}{subsubsection*.2423}%
\contentsline {paragraph}{Summary of changes}{660}{paragraph*.2424}%
\contentsline {paragraph}{Potential sources of incompatibilities}{662}{paragraph*.2425}%
\contentsline {paragraph}{Details of changes in 8.6beta1}{662}{paragraph*.2426}%
\contentsline {paragraph}{Details of changes in 8.6}{664}{paragraph*.2427}%
\contentsline {paragraph}{Details of changes in 8.6.1}{664}{paragraph*.2428}%
\contentsline {subsubsection}{Version 8.5}{666}{subsubsection*.2429}%
\contentsline {paragraph}{Summary of changes}{666}{paragraph*.2430}%
\contentsline {paragraph}{Potential sources of incompatibilities}{668}{paragraph*.2431}%
\contentsline {paragraph}{Details of changes in 8.5beta1}{669}{paragraph*.2432}%
\contentsline {paragraph}{Details of changes in 8.5beta2}{676}{paragraph*.2433}%
\contentsline {paragraph}{Details of changes in 8.5beta3}{676}{paragraph*.2434}%
\contentsline {paragraph}{Details of changes in 8.5}{678}{paragraph*.2435}%
\contentsline {paragraph}{Details of changes in 8.5pl1}{678}{paragraph*.2436}%
\contentsline {paragraph}{Details of changes in 8.5pl2}{680}{paragraph*.2437}%
\contentsline {paragraph}{Details of changes in 8.5pl3}{681}{paragraph*.2438}%
\contentsline {subsubsection}{Version 8.4}{682}{subsubsection*.2439}%
\contentsline {paragraph}{Summary of changes}{682}{paragraph*.2440}%
\contentsline {paragraph}{Potential sources of incompatibilities}{684}{paragraph*.2441}%
\contentsline {paragraph}{Details of changes in 8.4beta}{685}{paragraph*.2442}%
\contentsline {paragraph}{Details of changes in 8.4beta2}{689}{paragraph*.2443}%
\contentsline {paragraph}{Details of changes in 8.4}{690}{paragraph*.2444}%
\contentsline {subsubsection}{Version 8.3}{690}{subsubsection*.2445}%
\contentsline {paragraph}{Summary of changes}{690}{paragraph*.2446}%
\contentsline {paragraph}{Details of changes}{691}{paragraph*.2447}%
\contentsline {subsubsection}{Version 8.2}{697}{subsubsection*.2448}%
\contentsline {paragraph}{Summary of changes}{697}{paragraph*.2449}%
\contentsline {paragraph}{Details of changes}{698}{paragraph*.2450}%
\contentsline {subsubsection}{Version 8.1}{706}{subsubsection*.2451}%
\contentsline {paragraph}{Summary of changes}{706}{paragraph*.2452}%
\contentsline {paragraph}{Details of changes in 8.1beta}{707}{paragraph*.2453}%
\contentsline {paragraph}{Details of changes in 8.1gamma}{710}{paragraph*.2454}%
\contentsline {paragraph}{Details of changes in 8.1}{711}{paragraph*.2455}%
\contentsline {subsubsection}{Version 8.0}{712}{subsubsection*.2456}%
\contentsline {paragraph}{Summary of changes}{712}{paragraph*.2457}%
\contentsline {paragraph}{Details of changes in 8.0beta old syntax}{713}{paragraph*.2458}%
\contentsline {paragraph}{Details of changes in 8.0beta new syntax}{716}{paragraph*.2459}%
\contentsline {paragraph}{Details of changes in 8.0}{717}{paragraph*.2460}%
\contentsline {chapter}{Bibliography}{719}{chapter*.2462}%
\contentsline {chapter}{Glossary}{723}{section*.2463}%
\contentsline {chapter}{Command Index}{724}{section*.2464}%
\contentsline {chapter}{Tactic Index}{728}{section*.2465}%
\contentsline {chapter}{Flags, options and Tables Index}{732}{section*.2466}%
\contentsline {chapter}{Gallina Index}{734}{section*.2467}%
\contentsline {chapter}{Errors and Warnings Index}{735}{section*.2468}%
\contentsline {chapter}{Attribute Index}{741}{section*.2469}%
\contentsline {chapter}{Index}{742}{section*.2470}%
