Skip to content

Commit cb4c3ea

Browse files
authored
Merge pull request #130 from coq-community/preRelease09
Revision book to page 82. deprecate a few symbols
2 parents b44d674 + 4da0923 commit cb4c3ea

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

63 files changed

+527
-546
lines changed

.github/workflows/docker-action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ jobs:
1515
strategy:
1616
matrix:
1717
image:
18-
- 'mathcomp/mathcomp-dev:coq-dev'
18+
- 'coqorg/coq:dev-ocaml-4.13.1-flambda'
1919
- 'mathcomp/mathcomp:1.14.0-coq-8.15'
2020
- 'mathcomp/mathcomp:1.13.0-coq-8.14'
2121
- 'mathcomp/mathcomp:1.13.0-coq-8.13'

doc/epsilon0-chapter.tex

Lines changed: 35 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -353,9 +353,7 @@ \subsubsection{A Predicate for Characterizing Normal Forms}
353353
\input{movies/snippets/T1/badTerm}
354354

355355

356-
This term would have been written \(\omega^1\times 2 + \omega^\omega \times 3\) in the usual mathematical notation. We note that the exponents of $\omega$ are not in the right (strictly decreasing) order.
357-
Nevertheless, with the help of the order \texttt{lt} on \texttt{T1}, we are now able to characterize
358-
the set of all well-formed ordinal terms:
356+
This term would have been written \(\omega^1\times 2 + \omega^\omega \times 3\) in the usual mathematical notation. We note that the exponents of $\omega$ are not in the right (strictly decreasing) order. The following boolean function determines whether a given ordinal term is well formed.
359357

360358

361359
\vspace{4pt}
@@ -472,7 +470,7 @@ \subsubsection{\texttt{E0}: a sigma-type for \texorpdfstring{$\epsilon_0$}{epsil
472470

473471
\paragraph*{\gaiasign}
474472
\index{gaiabridge}{Type of well formed ordinal terms below $\epsilon_0$}
475-
The library~\href{../theories/html/gaia_hydras.T1Bridge.html}{gaia\_hydras.T1Bridge} defines a \gaia-compatible type \texttt{E0}.
473+
Our library~\href{../theories/html/gaia_hydras.T1Bridge.html}{gaia\_hydras.T1Bridge} also defines a type \texttt{E0} (which doesn't exist in \gaia-\texttt{ssete9}).
476474

477475

478476

@@ -483,7 +481,7 @@ \subsection{Syntactic definition of limit and successor ordinals}
483481

484482
\vspace{4pt}
485483
\noindent
486-
\emph{From Module~\href{../theories/html/hydras.Epsilon0.T1.html\#succb}{Epsilon0.T1}}
484+
\emph{From Module~\href{../theories/html/hydras.Epsilon0.T1.html\#T1is_succ}{Epsilon0.T1}}
487485

488486

489487

@@ -499,7 +497,7 @@ \subsection{Syntactic definition of limit and successor ordinals}
499497

500498
\paragraph*{\gaiasign}
501499
\index{gaiabridge}{Limit and successor ordinals}
502-
In \gaia, the boolean functions associated with limit and successor ordinals are called \texttt{T1limit} and \texttt{T1is\_succ}.
500+
In \gaia, the boolean functions associated with limit and successor ordinals are also called \texttt{T1limit} and \texttt{T1is\_succ}.
503501

504502
From~\href{../theories/html/gaia_hydras.HydraGaia_Examples.html}{gaia\_hydras.HydraGaia\_Examples}.
505503

@@ -521,20 +519,21 @@ \subsubsection{Successor}
521519
\label{Functions:succ-T1}
522520

523521
\vspace{4pt}
522+
\noindent
524523
\emph{From Module~\href{../theories/html/hydras.Epsilon0.T1.html\#succ}{Epsilon0.T1}}
525524

526525

527526
\input{movies/snippets/T1/succDef}
528527

529528
The following lemma establishes the connection between the function
530-
\texttt{succ} and the Boolean predicate \texttt{succb}.
529+
\texttt{succ} and the Boolean predicate \texttt{T1is\_succ}.
531530

532531
\vspace{4pt}
533532

534533
\input{movies/snippets/T1/succbIff}
535534

536-
\begin{exercise}[\gaiasign]
537-
Look for the \gaia-theorem which corresponds to \texttt{succb\_iff}.
535+
\begin{exercise}
536+
\gaiasign Look for the \gaia-theorem which corresponds to \texttt{T1is\_succ\_iff}.
538537
\end{exercise}
539538

540539
\subsubsection{Successor function on \texttt{E0}}
@@ -738,25 +737,35 @@ \subsubsection{Using a stronger inductive predicate.}
738737
\inputsnippets{E0/E0LtWf}
739738

740739

741-
\begin{remark}
740+
\begin{remark}[Related work]
742741
\label{remark:a3pat}
743-
The alternate proof of well-foundedness using \'Evelyne Contejean's work on
744-
recursive path ordering~\cite{DershowitzRPO, a3pat} is available in the
742+
A proof of well-foundedness using \'Evelyne Contejean's work on
743+
recursive path ordering~\cite{DershowitzRPO, a3pat} is also available in the
745744
library \href{../theories/html/hydras.Epsilon0.Epsilon0rpo.html}{Epsilon0.Epsilon0rpo}.
745+
746+
In~\cite{Manolios2005}, Manolios and Vroom prove the well-foundedness of ordinal terms below $\epsilon_0$ by reduction to the natural order on the set of natural numbers.
746747
\end{remark}
747748

748749

749750

750751
\subsection{An ordinal notation for \texorpdfstring{$\epsilon_0$}{epsilon0}}
751752

752-
We build an instance of \texttt{ON}, and prove its correctness w.r.t. Schutte's model (see Chapter~\ref{chap:schutte}).
753753

754+
We are now able to build an instance of \texttt{ON}.
755+
756+
\vspace{4pt}
757+
\noindent
754758
\emph{From Module~\href{../theories/html/hydras.Epsilon0.E0.html}{Epsilon0.E0}}
755759

756760
\input{movies/snippets/E0/InstanceEpsilon0}
757761

758762
\label{instance-epsilon0}
759763

764+
765+
We prove also that this notation is correct w.r.t. Schutte's model (see Chapter~\ref{chap:schutte}).
766+
767+
\vspace{4pt}
768+
\noindent
760769
\emph{From Module~\href{../theories/html/hydras.Schutte.Correctness_E0.html}{Schutte.Correctness\_E0}}
761770

762771

@@ -801,7 +810,7 @@ \subsection{An ordinal notation for \gaia's ordinals}
801810

802811

803812

804-
\section{A refinement of \texttt{E0} : an ordinal notation for \texorpdfstring{$\omega^\omega$}{omega\^omega}}
813+
\section{An ordinal notation for \texorpdfstring{$\omega^\omega$}{omega\^omega}}
805814

806815
In Module \href{https://github.com/coq-community/hydra-battles/blob/master/theories/
807816
ordinals/OrdinalNotations/OmegaOmega.v}{theories/ordinals/OrdinalNotations/OmegaOmega.v},
@@ -852,7 +861,7 @@ \subsection{An ordinal notation for \gaia's ordinals}
852861

853862

854863

855-
\begin{exercise}[not trivial]
864+
\begin{exercise}
856865
It may be interesting to write a \emph{direct} proof of well-foundedness of the order in $\omega^\omega$ (\emph{i.e.}
857866
without using properties of $\epsilon_0$). This exercise may
858867
help to understand better the proof structure of Sect.~\vref{sec:strongly-accessible}.
@@ -1045,7 +1054,7 @@ \subsection{An ordinal notation for \gaia's ordinals}
10451054

10461055
We prove the commutativity of $\oplus$ in two steps.
10471056
First, we prove by transfinite induction on $\alpha$ that the restriction of $\oplus$ to the
1048-
interval $[0..\alpha)$ is commutative.
1057+
interval $[0,\alpha)$ is commutative.
10491058

10501059
\index{maths}{Transfinite induction}
10511060

@@ -1130,18 +1139,18 @@ \subsection{An ordinal notation for \gaia's ordinals}
11301139

11311140
\inputsnippets{GHydra/mDef, GHydra/mVariant, GHydra/Termination}
11321141

1133-
\section*{Conclusion}
1142+
% \section*{Conclusion}
11341143

1135-
Let us recall three results we have proved so far.
1136-
\begin{itemize}
1137-
\item There exists a strictly decreasing variant which maps \texttt{Hydra} into
1138-
the segment $[0,\epsilon_0)$ for proving the termination of any hydra battle
1139-
\item There exists \emph{no} such variant from \texttt{Hydra} into
1140-
$[0,\omega^2)$, \emph{a fortiori} into $[0,\omega)$.
1141-
\end{itemize}
1144+
% Let us recall three results we have proved so far.
1145+
% \begin{itemize}
1146+
% \item There exists a strictly decreasing variant which maps \texttt{Hydra} into
1147+
% the segment $[0,\epsilon_0)$ for proving the termination of any hydra battle
1148+
% \item There exists \emph{no} such variant from \texttt{Hydra} into
1149+
% $[0,\omega^2)$, \emph{a fortiori} into $[0,\omega)$.
1150+
% \end{itemize}
11421151

1143-
So, a natural question is `` Does there exist any strictly decreasing variant mapping
1144-
type \texttt{Hydra} into some interval $[0,\alpha)$ (where $\alpha <\epsilon_0$) for proving the termination of all hydra battles''. The next chapter is dedicated to a formal proof that there exists no such $\alpha$, even if we consider a restriction to the set of ``standard'' battles.
1152+
% So, a natural question is `` Does there exist any strictly decreasing variant mapping
1153+
% type \texttt{Hydra} into some interval $[0,\mu)$ (where $\mu <\epsilon_0$) for proving the termination of all hydra battles''. The next chapter is dedicated to a formal proof that there exists no such $\mu$, even if we consider a restriction to the set of ``standard'' battles.
11451154

11461155

11471156

doc/ks-chapter.tex

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ \section{Introduction}
3131
\end{quote}
3232

3333
Our proofs are constructive and require no axioms: they are closed terms of the CIC, and are mainly composed on function definitions and proofs of properties of these functions.
34-
They share much theoretical material with Kirby and Paris', although they do not use any knowledge about Peano arithmetic nor model theory. The combinatorial arguments we use and implement
34+
They borrow much theoretical material from Kirby and Paris, although they do not use any knowledge about Peano arithmetic nor about model theory. The combinatorial arguments we use and implement
3535
come from
3636
an article by J.~Ketonen and R.~Solovay~\cite{KS81}, already cited in the work
3737
by L.~Kirby and J.~Paris. % on the termination of Goodstein sequences and hydra battles~\cite{KP82}.
@@ -49,31 +49,33 @@ \section{Canonical Sequences}
4949

5050
\index{maths}{Transfinite induction}
5151
\begin{itemize}
52-
\item If $\alpha\not=0$, then $\canonseq{\alpha}{i}<\alpha$. Thus canonical sequences can be used for proofs by transfinite induction or function definition by transfinite recursion
52+
\item If $\alpha\not=0$, then $\canonseq{\alpha}{i}<\alpha$. Thus canonical sequences can be used in proofs by transfinite induction or function definition by transfinite recursion
5353
\item If $\lambda$ is a limit ordinal, then $\lambda$ is the least upper bound of the set
5454
$\{\canonseq{\lambda}{i}\;|\,i\in\mathbb{N}_1\}$
5555

5656

5757
\item If $\beta<\alpha<\epsilon_0$, then there is a ``path'' from $\alpha$ to $\beta$, \emph{i.e.} a
5858
sequence $\alpha_0=\alpha, \alpha_1, \dots, \alpha_n=\beta$, where for every $k<n$, there exists some $i_k$ such that $\alpha_{k+1}=\canonseq{\alpha_k}{i_k}$
59-
\item Canonical sequences correspond tightly to rounds of hydra battles: if $\alpha\not=0$,
60-
then $\iota(\alpha)$ is transformed into $\iota(\canonseq{\alpha}{i+1})$ in one round with
61-
the replication factor $i$ (Lemma \href{../theories/html/hydras.Hydra.O2H.html\#canonS_iota_i}{Hydra.O2H.canonS\_iota\_i}).
62-
\item From the two previous properties, we infer that whenever $\beta<\alpha<\epsilon_0$, there exists a (free) battle from $\iota(\alpha)$ to $\iota(\beta)$.
6359
\end{itemize}
6460

6561
\begin{remark}
66-
In~\cite{KS81}, canonical sequences are defined for any ordinal $\alpha <\epsilon_0$,
62+
Canonical sequences are defined for any ordinal $\alpha <\epsilon_0$,
6763
by stating that if $\alpha$ is a successor ordinal $\beta+1$, the sequence associated with
6864
$\alpha$ is simply the constant sequence whose terms are equal to $\beta$.
6965
Likewise, the canonical sequence of $0$ maps any natural number to $0$.
7066

71-
This convention allows us to make total the function that maps any ordinal $\alpha$ and natural number $i$ to the ordinal $\canonseq{\alpha}{i}$.
72-
67+
Thus, the function that maps any ordinal $\alpha$ and natural number $i$ to the ordinal $\canonseq{\alpha}{i}$ is total.
7368
\end{remark}
7469

70+
\subsection{Canonical sequences and hydra battles}
7571

76-
First, let us recall how canonical sequences are defined in~\cite{KS81}. For efficiency's sake, we decided not to implement directly K.\&S's definitions, but to define in \gallina{} simply typed structurally recursive functions which share the abstract properties which are used in the mathematical proofs\footnote{With a small difference: the $0$-th term of the canonical sequence is not the same in our development as in~\cite{KS81}.}.
72+
Canonical sequences correspond tightly to rounds of hydra battles: if $\alpha\not=0$,
73+
then $\iota(\alpha)$ is transformed into $\iota(\canonseq{\alpha}{i+1})$ in one round with
74+
the replication factor $i$ (Lemma \href{../theories/html/hydras.Hydra.O2H.html\#canonS_iota_i}{Hydra.O2H.canonS\_iota\_i}).
75+
Thus, whenever $\beta<\alpha<\epsilon_0$, there exists a (free) battle from $\iota(\alpha)$ to $\iota(\beta)$.
76+
77+
\subsection{Definitions}
78+
First, let us recall how canonical sequences are defined in~\cite{KS81}. For efficiency's sake, we decided not to implement directly K.\&S's definitions, but to define in \gallina{} simply typed structurally recursive functions which share the abstract properties which are used in the mathematical proofs.
7779

7880

7981

@@ -125,8 +127,10 @@ \subsubsection{Canonical sequences in \coq}
125127

126128
\input{movies/snippets/Canon/canonDef}
127129

128-
\paragraph*{\gaiasign} Our library~\href{../theories/html/gaia_hydras.GCanon.html}{gaia\_hydras.GCanon} transposes the function \texttt{canon} into \gaia's type \texttt{T1}
129-
(please see Sect.\~ref{sect:gcanon}).
130+
\paragraph*{\gaiasign}
131+
The translation of \texttt{canon} compatible with \gaia's data-types is
132+
defined in ~\href{../theories/html/gaia_hydras.GCanon.html\#canon}{gaia\_hydras.GCanon} (please see Sect.~\ref{sect:gcanon}).
133+
130134
\index{gaiabridge}{Canonical sequences}
131135
\paragraph*{Remark}
132136
In the present state of this library, the following specializations of \texttt{canon} are still used in some proofs or lemma statements. They are planned to be deprecated.
@@ -195,8 +199,7 @@ \subsubsection{Limit ordinals are truly limits}
195199
\label{lemma:canonS-limit}
196200

197201

198-
Note the use of \coq's \texttt{sig} type in the theorem's statement, which
199-
relates the boolean function \texttt{limitb} defined on the \texttt{T1} data-type with a constructive view of the limit of a sequence: for any $\beta<\lambda$, we can compute an item of the canonical sequence of $\lambda$ which is greater than $\beta$.
202+
Note the use of \coq's \texttt{sig} type in the theorem's statement, which expresses a constructive view of the limit of a sequence: for any $\beta<\lambda$, we can compute an item of the canonical sequence of $\lambda$ which is greater than $\beta$.
200203
We can also state directly that $\lambda$ is a (strict) least upper bound of the elements of its canonical sequence.
201204

202205
\input{movies/snippets/Canon/canonSLimitLub}
@@ -232,7 +235,8 @@ \section{Accessibility inside \texorpdfstring{$\epsilon_0$}{epsilon0}\,: paths}
232235
\label{sect:pathes-intro}
233236

234237
Let us consider a kind of accessibility problem inside $\epsilon_0$: given two ordinals $\alpha$ and $\beta$, where $\beta<\alpha<\epsilon_0$, find a \emph{path} consisting of a finite sequence $\gamma_0=\alpha,\dots,\gamma_l=\beta$,
235-
where, for every $i<l$, $\gamma_i \not= 0$ \footnote{This condition allows us to ignore paths which end by a lot of useless $0$s.} and there exists some strictly positive integer $s_i$
238+
where, for every $i<l$, $\gamma_i \not= 0$
239+
and there exists some strictly positive integer $s_i$
236240
such that $\gamma_{i+1}=\canonseq{\gamma}{s_i}$.
237241

238242
Let $s$ be the sequence $\langle s_0,s_1,\dots, s_{l-1} \rangle$. We describe the
@@ -247,15 +251,15 @@ \section{Accessibility inside \texorpdfstring{$\epsilon_0$}{epsilon0}\,: paths}
247251

248252

249253
Note that, given $\alpha$ and $\beta$, where $\beta < \alpha$, the sequence $s$ which leads from $\alpha$ to $\beta$ is not unique.
250-
Indeed, if $\alpha$ is a limit ordinal, the first element of $s$ can be any integer $i$ such that $\beta<\canonseq{\alpha}{i}$, and if $\alpha$ is a successor ordinal,
251-
then the sequence $s$ can start with any positive integer.
252254

253255

254-
For instance, we have also
255-
$\omega*2 \xrightarrow[3,4,5,6]{}\omega$.
256+
257+
For instance, we have
258+
$\omega\times 2 \xrightarrow[2]{}\omega$ and
259+
$\omega\times 2 \xrightarrow[3,4,5,6]{}\omega$.
256260
Likewise,
257-
$\omega*2 \xrightarrow[1,2,1,4]{} 0$ and
258-
$\omega*2 \xrightarrow[3,3,3,3,3,3,3,3]{} 0$.
261+
$\omega\times 2 \xrightarrow[1,2,1,4]{} 0$ and
262+
$\omega\times 2 \xrightarrow[3,3,3,3,3,3,3,3]{} 0$.
259263
\end{remark}
260264

261265
\subsection{Formal definition}
@@ -285,7 +289,7 @@ \subsection{Formal definition}
285289
\paragraph*{\gaiasign}
286290

287291
The library~\href{../theories/html/gaia_hydras.GPaths.html}{gaia\_hydras.GPaths} transposes the notion of path into \gaia's type \texttt{T1}
288-
(please see Sect.\~ref{sect:gpath}).
292+
(please see Sect.~\ref{sect:gpath}).
289293

290294

291295
\index{hydras}{Exercises}
@@ -312,7 +316,7 @@ \subsection{Existence of a path}
312316

313317

314318
\noindent
315-
From the lemma \texttt{canon\_LT}~\vref{lemma:canon_LT}, we can convert any path into an inequality on ordinals (by induction on paths).
319+
By the lemma \texttt{canon\_LT}~(Sct.\vref{lemma:canon_LT}), we can convert any path into an inequality on ordinals (by induction on paths).
316320

317321
\input{movies/snippets/Paths/pathToLT}
318322

@@ -532,12 +536,13 @@ \section{The case of standard battles}
532536

533537

534538

535-
Our goal is now to transform any inequality $\beta<\alpha<\epsilon_0$ into a standard path $\alpha \xrightarrow[i,j]{} \beta$ for some $i$ and $j$, then into a standard battle
536-
from $\iota(\alpha+i)$ to $\iota(\beta)$.
539+
Our goal is now to transform any inequality $\beta<\alpha<\epsilon_0$ into a standard path $\alpha \xrightarrow[i,j]{} \beta$ for some $i$ and $j$, which corresponds to a standard battle
540+
from $\iota(\alpha)$ (at time $i$) to $\iota(\beta)$
541+
(at time $j$) .
537542
Following~\cite{KS81}, we proceed in two stages:
538543
\begin{enumerate}
539544
\item we simulate plain (free) paths from $\alpha$ to $\beta$ with
540-
paths made of steps $(\gamma,\canonseq{\gamma}{n})$, \emph{with the same $n$ all along the path}
545+
paths made of steps $(\gamma,\canonseq{\gamma}{n})$, \emph{with the same $n$ all along the path}.
541546
\item we simulate any such path by a standard path.
542547
\end{enumerate}
543548

doc/large-sets-chapter.tex

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
\chapter{Large sets and rapidly growing functions}\label{chap:alpha-large}
22

33
\begin{remark}
4-
Some notations (mainly names of fast-growing functions) of our development may differ slightly from the literature. Although this fact does not affect our proofs, we are preparing a future version where the names $F\_alpha$, $f\_alpha$, $H\_alpha$, etc., are fully consistent with the cited articles.
4+
Some notations (mainly names of fast-growing functions) of our development may differ slightly from the literature. Although this fact does not affect our proofs, we are preparing a future version where the names $F_\alpha$, $f_\alpha$, $H_\alpha$, etc., are fully consistent with the cited articles.
55

66
\end{remark}
77
%\section{Introduction}
@@ -109,7 +109,7 @@ \subsection{Examples}
109109
\section{Length of minimal large sequences}
110110
\label{sect:lalpha-section}
111111

112-
Now, consider any natural number $k>0$ any ordinal $0<\alpha<\epsilon_0$. We would like to compute
112+
Now, let us consider some natural number $k>0$ and an ordinal $0<\alpha<\epsilon_0$. We would like to compute
113113
a number $l$ such that the interval $[k,l]$ is $\alpha$-mlarge. So,
114114
the standard battle starting with $\iota(\alpha)$ and the replication factor $k$ will end after $(l-k+1)$ steps.
115115

@@ -136,7 +136,7 @@ \section{Length of minimal large sequences}
136136
use \coq{} to reason about the \emph{specification} of \texttt{L},
137137
prove properties of any function which satisfies this specification.
138138
In Sect.~\ref{sect:L-equations}, we use the \texttt{coq-equations} plug-in
139-
to define a function \texttt{L\_}, and prove its correctness w.r.t. its specification.
139+
to define \texttt{L\_}, then prove its correctness w.r.t. its specification.
140140

141141

142142
\subsection{Formal specification}

doc/ordinal-chapter.tex

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -952,14 +952,11 @@ \section{Comparing two ordinal notations}
952952
\label{fig:subsegment}
953953
\end{figure}
954954

955-
If \texttt{OB} is presumed to be correct, then we may consider that \texttt{OA} ``inherits'' its correctness from the bigger notation system \texttt{OB}.
956-
957-
958955
\label{types:SubON}
959956
\index{hydras}{Library OrdinalNotations!Type classes!SubON}
960957

961-
following definition
962-
(in ~\href{../theories/html/hydras.OrdinalNotations.ON_Generic.html}{ON\_Generic}).
958+
\noindent
959+
From~\href{../theories/html/hydras.OrdinalNotations.ON_Generic.html}{ON\_Generic}.
963960

964961
\input{movies/snippets/ON_Generic/SubONDef}
965962

meta.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,7 @@ supported_coq_versions:
107107
opam: '{(>= "8.13" & < "8.16~") | (= "dev")}'
108108

109109
tested_coq_opam_versions:
110-
- version: 'coq-dev'
111-
repo: 'mathcomp/mathcomp-dev'
110+
- version: 'dev-ocaml-4.13.1-flambda'
112111
- version: '1.14.0-coq-8.15'
113112
repo: 'mathcomp/mathcomp'
114113
- version: '1.13.0-coq-8.14'

theories/additions/Dichotomy.v

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ Proof.
128128
discriminate.
129129
Qed.
130130

131-
Global Hint Resolve dicho_aux_le_xOXO dicho_aux_le_xOXI
131+
#[global] Hint Resolve dicho_aux_le_xOXO dicho_aux_le_xOXI
132132
dicho_aux_le_xIXO dicho_aux_le_xIXI : chains.
133133

134134
Lemma dicho_aux_lt : forall p, 3 < p ->

0 commit comments

Comments
 (0)