diff options
Diffstat (limited to 'docs/htmldoc/mathcomp.algebra.rat.html')
| -rw-r--r-- | docs/htmldoc/mathcomp.algebra.rat.html | 702 |
1 files changed, 702 insertions, 0 deletions
diff --git a/docs/htmldoc/mathcomp.algebra.rat.html b/docs/htmldoc/mathcomp.algebra.rat.html new file mode 100644 index 0000000..ee336b5 --- /dev/null +++ b/docs/htmldoc/mathcomp.algebra.rat.html @@ -0,0 +1,702 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" +"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<link href="coqdoc.css" rel="stylesheet" type="text/css" /> +<title>mathcomp.algebra.rat</title> +</head> + +<body> + +<div id="page"> + +<div id="header"> +</div> + +<div id="main"> + +<h1 class="libtitle">Library mathcomp.algebra.rat</h1> + +<div class="code"> +<span class="comment">(* (c) Copyright 2006-2016 Microsoft Corporation and Inria. <br/> + Distributed under the terms of CeCILL-B. *)</span><br/> +<span class="id" title="keyword">Require</span> <span class="id" title="keyword">Import</span> <a class="idref" href="mathcomp.ssreflect.ssreflect.html#"><span class="id" title="library">mathcomp.ssreflect.ssreflect</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + This file defines a datatype for rational numbers and equips it with a + structure of archimedean, real field, with int and nat declared as closed + subrings. + rat == the type of rational number, with single constructor Rat + n%:Q == explicit cast from int to rat, postfix notation for the + ratz constant + numq r == numerator of (r : rat) + denq r == denominator of (r : rat) + x \is a Qint == x is an element of rat whose denominator is equal to 1 + x \is a Qnat == x is a positive element of rat whose denominator is equal + to 1 + ratr x == generic embedding of (r : R) into an arbitrary unitring. +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Import</span> <span class="id" title="var">GRing.Theory</span>.<br/> +<span class="id" title="keyword">Import</span> <span class="id" title="var">Num.Theory</span>.<br/> + +<br/> +<span class="id" title="keyword">Set Implicit Arguments</span>.<br/> + +<br/> +<span class="id" title="keyword">Local Open</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Record</span> <a name="rat"><span class="id" title="record">rat</span></a> : <span class="id" title="keyword">Set</span> := <a name="Rat"><span class="id" title="constructor">Rat</span></a> {<br/> + <a name="valq"><span class="id" title="projection">valq</span></a> : (<a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>);<br/> + <span class="id" title="var">_</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="method">valq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#coprime"><span class="id" title="definition">coprime</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="method">valq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="method">valq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a><br/> +}.<br/> + +<br/> +<span class="id" title="keyword">Delimit</span> <span class="id" title="keyword">Scope</span> <span class="id" title="var">rat_scope</span> <span class="id" title="keyword">with</span> <span class="id" title="var">Q</span>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="ratz"><span class="id" title="definition">ratz</span></a> (<span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) := @<a class="idref" href="mathcomp.algebra.rat.html#Rat"><span class="id" title="constructor">Rat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> (<a class="idref" href="mathcomp.ssreflect.div.html#coprimen1"><span class="id" title="lemma">coprimen1</span></a> <span class="id" title="var">_</span>).<br/> +</div> + +<div class="doc"> + Coercion ratz (n : int) := @Rat (n, 1) (coprimen1 _). +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_subType</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">subType</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">for</span></a> <a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#341c160c3e7b20d967b85d1852a7f89f"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="rat_eqMixin"><span class="id" title="definition">rat_eqMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">eqMixin</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#4bc2d2dce12edef0fb9c71d4a902ae5d"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_eqType</span> := <a class="idref" href="mathcomp.ssreflect.eqtype.html#Equality.Exports.EqType"><span class="id" title="abbreviation">EqType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_eqMixin"><span class="id" title="definition">rat_eqMixin</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="rat_choiceMixin"><span class="id" title="definition">rat_choiceMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">choiceMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#6c8b2d90ff1fbb8e9926bbf12495cb70"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_choiceType</span> := <a class="idref" href="mathcomp.ssreflect.choice.html#Choice.Exports.ChoiceType"><span class="id" title="abbreviation">ChoiceType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_choiceMixin"><span class="id" title="definition">rat_choiceMixin</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="rat_countMixin"><span class="id" title="definition">rat_countMixin</span></a> := <a class="idref" href="mathcomp.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation">countMixin</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation">by</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#99c739c8f4212f142296b27d3077c65e"><span class="id" title="notation"><:]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_countType</span> := <a class="idref" href="mathcomp.ssreflect.choice.html#Countable.Exports.CountType"><span class="id" title="abbreviation">CountType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_countMixin"><span class="id" title="definition">rat_countMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_subCountType</span> := <a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">subCountType</span></a> <a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a><a class="idref" href="mathcomp.ssreflect.choice.html#8a7192fa64a42310658fd5be07ae4fcc"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="numq"><span class="id" title="definition">numq</span></a> <span class="id" title="var">x</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">).1</span></a>).<br/> +<span class="id" title="keyword">Definition</span> <a name="denq"><span class="id" title="definition">denq</span></a> <span class="id" title="var">x</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">).2</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="denq_gt0"><span class="id" title="lemma">denq_gt0</span></a> <span class="id" title="var">x</span> : 0 <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + <span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">denq_gt0</span>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="denq_ge0"><span class="id" title="definition">denq_ge0</span></a> <span class="id" title="var">x</span> := <a class="idref" href="mathcomp.algebra.ssrnum.html#Num.Theory.ltrW"><span class="id" title="lemma">ltrW</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#denq_gt0"><span class="id" title="lemma">denq_gt0</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="denq_lt0"><span class="id" title="lemma">denq_lt0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="denq_neq0"><span class="id" title="lemma">denq_neq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0.<br/> + <span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">denq_neq0</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="denq_eq0"><span class="id" title="lemma">denq_eq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#false"><span class="id" title="constructor">false</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="coprime_num_den"><span class="id" title="lemma">coprime_num_den</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.ssreflect.div.html#coprime"><span class="id" title="definition">coprime</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="RatK"><span class="id" title="lemma">RatK</span></a> <span class="id" title="var">x</span> <span class="id" title="var">P</span> : @<a class="idref" href="mathcomp.algebra.rat.html#Rat"><span class="id" title="constructor">Rat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.rat.html#P"><span class="id" title="variable">P</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="fracq_subproof"><span class="id" title="lemma">fracq_subproof</span></a> : <span class="id" title="keyword">∀</span> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>,<br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">n</span> :=<br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a><br/> + <a class="idref" href="mathcomp.algebra.ssrint.html#b033a3d34e421a2439563f5ffdab0b9b"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssrint.html#b033a3d34e421a2439563f5ffdab0b9b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#b033a3d34e421a2439563f5ffdab0b9b"><span class="id" title="notation">^</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#b033a3d34e421a2439563f5ffdab0b9b"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(+)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">)</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#b033a3d34e421a2439563f5ffdab0b9b"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#df17451da28eb630dbb51b12706ba39e"><span class="id" title="notation">%/</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#gcdn"><span class="id" title="definition">gcdn</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">Z</span></a> <span class="id" title="tactic">in</span><br/> + <span class="id" title="keyword">let</span> <span class="id" title="var">d</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#df17451da28eb630dbb51b12706ba39e"><span class="id" title="notation">%/</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#gcdn"><span class="id" title="definition">gcdn</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">Z</span></a> <span class="id" title="tactic">in</span><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.div.html#coprime"><span class="id" title="definition">coprime</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="fracq"><span class="id" title="definition">fracq</span></a> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> (@<a class="idref" href="mathcomp.algebra.rat.html#Rat"><span class="id" title="constructor">Rat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><span class="id" title="var">_</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <span class="id" title="var">_</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#fracq_subproof"><span class="id" title="lemma">fracq_subproof</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="ratz_frac"><span class="id" title="lemma">ratz_frac</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.rat.html#ratz"><span class="id" title="definition">ratz</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="valqK"><span class="id" title="lemma">valqK</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="scalq_key"><span class="id" title="lemma">scalq_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#unit"><span class="id" title="inductive">unit</span></a>. <br/> +<span class="id" title="keyword">Definition</span> <a name="scalq_def"><span class="id" title="definition">scalq_def</span></a> <span class="id" title="var">x</span> := <a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.div.html#gcdn"><span class="id" title="definition">gcdn</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">Z</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="scalq"><span class="id" title="definition">scalq</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#locked_with"><span class="id" title="definition">locked_with</span></a> <a class="idref" href="mathcomp.algebra.rat.html#scalq_key"><span class="id" title="lemma">scalq_key</span></a> <a class="idref" href="mathcomp.algebra.rat.html#scalq_def"><span class="id" title="definition">scalq_def</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">scalq_unlockable</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">unlockable</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">fun</span></a> <a class="idref" href="mathcomp.algebra.rat.html#scalq"><span class="id" title="definition">scalq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#58f94351327943cd874eb55da8e0ca14"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="scalq_eq0"><span class="id" title="lemma">scalq_eq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#scalq"><span class="id" title="definition">scalq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sgr_scalq"><span class="id" title="lemma">sgr_scalq</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#scalq"><span class="id" title="definition">scalq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="signr_scalq"><span class="id" title="lemma">signr_scalq</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#scalq"><span class="id" title="definition">scalq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="scalqE"><span class="id" title="lemma">scalqE</span></a> <span class="id" title="var">x</span> :<br/> + <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#scalq"><span class="id" title="definition">scalq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0)%<span class="id" title="var">R</span> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.ssreflect.div.html#gcdn"><span class="id" title="definition">gcdn</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#9fc2e395aa5602e5669820ba2f5dcc44"><span class="id" title="notation">Z</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="valq_frac"><span class="id" title="lemma">valq_frac</span></a> <span class="id" title="var">x</span> :<br/> + <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#scalq"><span class="id" title="definition">scalq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#scalq"><span class="id" title="definition">scalq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="zeroq"><span class="id" title="definition">zeroq</span></a> := <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="oneq"><span class="id" title="definition">oneq</span></a> := <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="frac0q"><span class="id" title="lemma">frac0q</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#zeroq"><span class="id" title="definition">zeroq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="fracq0"><span class="id" title="lemma">fracq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#zeroq"><span class="id" title="definition">zeroq</span></a>. <br/> + +<br/> +<span class="id" title="keyword">CoInductive</span> <a name="fracq_spec"><span class="id" title="inductive">fracq_spec</span></a> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/> + | <a name="FracqSpecN"><span class="id" title="constructor">FracqSpecN</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 : <a class="idref" href="mathcomp.algebra.rat.html#fracq_spec"><span class="id" title="inductive">fracq_spec</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.rat.html#zeroq"><span class="id" title="definition">zeroq</span></a><br/> + | <a name="FracqSpecP"><span class="id" title="constructor">FracqSpecP</span></a> <span class="id" title="var">k</span> <span class="id" title="var">fx</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.rat.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 : <a class="idref" href="mathcomp.algebra.rat.html#fracq_spec"><span class="id" title="inductive">fracq_spec</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fx"><span class="id" title="variable">fx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fx"><span class="id" title="variable">fx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fx"><span class="id" title="variable">fx</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="fracqP"><span class="id" title="lemma">fracqP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#fracq_spec"><span class="id" title="inductive">fracq_spec</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rat_eqE"><span class="id" title="lemma">rat_eqE</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sgr_denq"><span class="id" title="lemma">sgr_denq</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="normr_denq"><span class="id" title="lemma">normr_denq</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="absz_denq"><span class="id" title="lemma">absz_denq</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a>%<span class="id" title="var">N</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rat_eq"><span class="id" title="lemma">rat_eq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="fracq_eq"><span class="id" title="lemma">fracq_eq</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="fracq_eq0"><span class="id" title="lemma">fracq_eq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#zeroq"><span class="id" title="definition">zeroq</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">||</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#14a7a9c7dc61f86bfb664d400fabaf8a"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="fracqMM"><span class="id" title="lemma">fracqMM</span></a> <span class="id" title="var">x</span> <span class="id" title="var">n</span> <span class="id" title="var">d</span> : <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="addq_subdef"><span class="id" title="definition">addq_subdef</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="addq"><span class="id" title="definition">addq</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#addq_subdef"><span class="id" title="definition">addq_subdef</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="oppq_subdef"><span class="id" title="definition">oppq_subdef</span></a> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="oppq"><span class="id" title="definition">oppq</span></a> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#oppq_subdef"><span class="id" title="definition">oppq_subdef</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="addq_subdefC"><span class="id" title="lemma">addq_subdefC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addq_subdef"><span class="id" title="definition">addq_subdef</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="addq_subdefA"><span class="id" title="lemma">addq_subdefA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addq_subdef"><span class="id" title="definition">addq_subdef</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="addq_frac"><span class="id" title="lemma">addq_frac</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#addq_subdef"><span class="id" title="definition">addq_subdef</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="ratzD"><span class="id" title="lemma">ratzD</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratz"><span class="id" title="definition">ratz</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="oppq_frac"><span class="id" title="lemma">oppq_frac</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#oppq"><span class="id" title="definition">oppq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#oppq_subdef"><span class="id" title="definition">oppq_subdef</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="ratzN"><span class="id" title="lemma">ratzN</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratz"><span class="id" title="definition">ratz</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.algebra.rat.html#oppq"><span class="id" title="definition">oppq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#59b5bb4add86e1e9ecbe874e74b2216e"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="addqC"><span class="id" title="lemma">addqC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="addqA"><span class="id" title="lemma">addqA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="add0q"><span class="id" title="lemma">add0q</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.rat.html#zeroq"><span class="id" title="definition">zeroq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="addNq"><span class="id" title="lemma">addNq</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_inverse"><span class="id" title="definition">left_inverse</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a>0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>) <a class="idref" href="mathcomp.algebra.rat.html#oppq"><span class="id" title="definition">oppq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="rat_ZmodMixin"><span class="id" title="definition">rat_ZmodMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.ZmodMixin"><span class="id" title="abbreviation">ZmodMixin</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addqA"><span class="id" title="lemma">addqA</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addqC"><span class="id" title="lemma">addqC</span></a> <a class="idref" href="mathcomp.algebra.rat.html#add0q"><span class="id" title="lemma">add0q</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addNq"><span class="id" title="lemma">addNq</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_ZmodType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Zmodule.Exports.ZmodType"><span class="id" title="abbreviation">ZmodType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_ZmodMixin"><span class="id" title="definition">rat_ZmodMixin</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="mulq_subdef"><span class="id" title="definition">mulq_subdef</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="mulq"><span class="id" title="definition">mulq</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#mulq_subdef"><span class="id" title="definition">mulq_subdef</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="mulq_subdefC"><span class="id" title="lemma">mulq_subdefC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq_subdef"><span class="id" title="definition">mulq_subdef</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="mul_subdefA"><span class="id" title="lemma">mul_subdefA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq_subdef"><span class="id" title="definition">mulq_subdef</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="invq_subdef"><span class="id" title="definition">invq_subdef</span></a> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#d19c7eafd0e2d195d10df94b392087b5"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#44400027531d4bc3f586a1997dc874c0"><span class="id" title="notation">)</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="invq"><span class="id" title="definition">invq</span></a> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#nosimpl"><span class="id" title="abbreviation">nosimpl</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#invq_subdef"><span class="id" title="definition">invq_subdef</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#valq"><span class="id" title="projection">valq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="mulq_frac"><span class="id" title="lemma">mulq_frac</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>)<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#mulq_subdef"><span class="id" title="definition">mulq_subdef</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="ratzM"><span class="id" title="lemma">ratzM</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">morph</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratz"><span class="id" title="definition">ratz</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">>-></span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#a0fd72584f326d7220475d01d3fceccd"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="invq_frac"><span class="id" title="lemma">invq_frac</span></a> <span class="id" title="var">x</span> :<br/> + <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#invq"><span class="id" title="definition">invq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#invq_subdef"><span class="id" title="definition">invq_subdef</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="mulqC"><span class="id" title="lemma">mulqC</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#commutative"><span class="id" title="definition">commutative</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="mulqA"><span class="id" title="lemma">mulqA</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#associative"><span class="id" title="definition">associative</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="mul1q"><span class="id" title="lemma">mul1q</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_id"><span class="id" title="definition">left_id</span></a> <a class="idref" href="mathcomp.algebra.rat.html#oneq"><span class="id" title="definition">oneq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="mulq_addl"><span class="id" title="lemma">mulq_addl</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#left_distributive"><span class="id" title="definition">left_distributive</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="nonzero1q"><span class="id" title="lemma">nonzero1q</span></a> : <a class="idref" href="mathcomp.algebra.rat.html#oneq"><span class="id" title="definition">oneq</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#zeroq"><span class="id" title="definition">zeroq</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="rat_comRingMixin"><span class="id" title="definition">rat_comRingMixin</span></a> :=<br/> + <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.ComRingMixin"><span class="id" title="abbreviation">ComRingMixin</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulqA"><span class="id" title="lemma">mulqA</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulqC"><span class="id" title="lemma">mulqC</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mul1q"><span class="id" title="lemma">mul1q</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq_addl"><span class="id" title="lemma">mulq_addl</span></a> <a class="idref" href="mathcomp.algebra.rat.html#nonzero1q"><span class="id" title="lemma">nonzero1q</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_Ring</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Ring.Exports.RingType"><span class="id" title="abbreviation">RingType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_comRingMixin"><span class="id" title="definition">rat_comRingMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_comRing</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.ComRing.Exports.ComRingType"><span class="id" title="abbreviation">ComRingType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulqC"><span class="id" title="lemma">mulqC</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="mulVq"><span class="id" title="lemma">mulVq</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#invq"><span class="id" title="definition">invq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="invq0"><span class="id" title="lemma">invq0</span></a> : <a class="idref" href="mathcomp.algebra.rat.html#invq"><span class="id" title="definition">invq</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0. <br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="RatFieldUnitMixin"><span class="id" title="definition">RatFieldUnitMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.FieldUnitMixin"><span class="id" title="abbreviation">FieldUnitMixin</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulVq"><span class="id" title="lemma">mulVq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#invq0"><span class="id" title="lemma">invq0</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_unitRing</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.UnitRingType"><span class="id" title="abbreviation">UnitRingType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#RatFieldUnitMixin"><span class="id" title="definition">RatFieldUnitMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_comUnitRing</span> := <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">comUnitRingType</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#e3ee791c903b0283e51d52d0692558ec"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="rat_field_axiom"><span class="id" title="lemma">rat_field_axiom</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.mixin_of"><span class="id" title="definition">GRing.Field.mixin_of</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_unitRing"><span class="id" title="definition">rat_unitRing</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="RatFieldIdomainMixin"><span class="id" title="definition">RatFieldIdomainMixin</span></a> := (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.FieldIdomainMixin"><span class="id" title="abbreviation">FieldIdomainMixin</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_field_axiom"><span class="id" title="lemma">rat_field_axiom</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_iDomain</span> :=<br/> + <span class="id" title="keyword">Eval</span> <span class="id" title="tactic">hnf</span> <span class="id" title="tactic">in</span> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.IntegralDomain.Exports.IdomainType"><span class="id" title="abbreviation">IdomainType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.FieldIdomainMixin"><span class="id" title="abbreviation">FieldIdomainMixin</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_field_axiom"><span class="id" title="lemma">rat_field_axiom</span></a>).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_fieldType</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.FieldType"><span class="id" title="abbreviation">FieldType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_field_axiom"><span class="id" title="lemma">rat_field_axiom</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="numq_eq0"><span class="id" title="lemma">numq_eq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">"</span></a>n %:Q" := (<a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">(</span></a><span class="id" title="var">n</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">)%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>)<br/> + (<span class="id" title="tactic">at</span> <span class="id" title="keyword">level</span> 2, <span class="id" title="tactic">left</span> <span class="id" title="keyword">associativity</span>, <span class="id" title="var">format</span> "n %:Q") : <span class="id" title="var">ring_scope</span>.<br/> + +<br/> +<span class="id" title="keyword">Hint Resolve</span> <span class="id" title="var">denq_neq0</span> <span class="id" title="var">denq_gt0</span> <span class="id" title="var">denq_ge0</span>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="subq"><span class="id" title="definition">subq</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> := (<a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#oppq"><span class="id" title="definition">oppq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>)).<br/> +<span class="id" title="keyword">Definition</span> <a name="divq"><span class="id" title="definition">divq</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> := (<a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#invq"><span class="id" title="definition">invq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>)).<br/> + +<br/> +<span class="id" title="keyword">Notation</span> <a name="def97f026256f8159a92c36958acd716"><span class="id" title="notation">"</span></a>0" := <a class="idref" href="mathcomp.algebra.rat.html#zeroq"><span class="id" title="definition">zeroq</span></a> : <span class="id" title="var">rat_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="c09e5c1f82b7b5991ed75deb1efe5abc"><span class="id" title="notation">"</span></a>1" := <a class="idref" href="mathcomp.algebra.rat.html#oneq"><span class="id" title="definition">oneq</span></a> : <span class="id" title="var">rat_scope</span>.<br/> +<span class="id" title="keyword">Infix</span> <a name="05d3ce00809c91b931b44ec9c44a5881"><span class="id" title="notation">"</span></a>+" := <a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a> : <span class="id" title="var">rat_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="76eb5e89315fa8c70430d629db68294c"><span class="id" title="notation">"</span></a>- x" := (<a class="idref" href="mathcomp.algebra.rat.html#oppq"><span class="id" title="definition">oppq</span></a> <span class="id" title="var">x</span>) : <span class="id" title="var">rat_scope</span>.<br/> +<span class="id" title="keyword">Infix</span> <a name="9ce2bfdb4399105085a0822f2e92f17c"><span class="id" title="notation">"</span></a>×" := <a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a> : <span class="id" title="var">rat_scope</span>.<br/> +<span class="id" title="keyword">Notation</span> <a name="1cb2aecc2bd1d043a7247d53080d33f4"><span class="id" title="notation">"</span></a>x ^-1" := (<a class="idref" href="mathcomp.algebra.rat.html#invq"><span class="id" title="definition">invq</span></a> <span class="id" title="var">x</span>) : <span class="id" title="var">rat_scope</span>.<br/> +<span class="id" title="keyword">Infix</span> <a name="4c949b742776a07138bf0d77b27a0a1f"><span class="id" title="notation">"</span></a>-" := <a class="idref" href="mathcomp.algebra.rat.html#subq"><span class="id" title="definition">subq</span></a> : <span class="id" title="var">rat_scope</span>.<br/> +<span class="id" title="keyword">Infix</span> <a name="d8dadf98849e120173c7cdacda1d60b8"><span class="id" title="notation">"</span></a>/" := <a class="idref" href="mathcomp.algebra.rat.html#divq"><span class="id" title="definition">divq</span></a> : <span class="id" title="var">rat_scope</span>.<br/> + +<br/> +</div> + +<div class="doc"> + ratz should not be used, %:Q should be used instead +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="ratzE"><span class="id" title="lemma">ratzE</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.rat.html#ratz"><span class="id" title="definition">ratz</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="numq_int"><span class="id" title="lemma">numq_int</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a>. <br/> +<span class="id" title="keyword">Lemma</span> <a name="denq_int"><span class="id" title="lemma">denq_int</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rat0"><span class="id" title="lemma">rat0</span></a> : 0<a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0. <br/> +<span class="id" title="keyword">Lemma</span> <a name="rat1"><span class="id" title="lemma">rat1</span></a> : 1<a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 1. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="numqN"><span class="id" title="lemma">numqN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="denqN"><span class="id" title="lemma">denqN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + Will be subsumed by pnatr_eq0 +</div> +<div class="code"> +<span class="id" title="keyword">Fact</span> <a name="intq_eq0"><span class="id" title="lemma">intq_eq0</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="mathcomp.ssreflect.eqtype.html#340b60eb5a3e9913f807040630cb8d43"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0)%<span class="id" title="var">N</span>.<br/> + +<br/> +</div> + +<div class="doc"> + fracq should never appear, its canonical form is _% +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="fracqE"><span class="id" title="lemma">fracqE</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#fracq"><span class="id" title="definition">fracq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#c4877bbfe60d8f22b47ac99ace86216a"><span class="id" title="notation">.1</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#f4827404159513e7fd691b60b7877737"><span class="id" title="notation">.2</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="divq_num_den"><span class="id" title="lemma">divq_num_den</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">CoInductive</span> <a name="divq_spec"><span class="id" title="inductive">divq_spec</span></a> (<span class="id" title="var">n</span> <span class="id" title="var">d</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/> +| <a name="DivqSpecN"><span class="id" title="constructor">DivqSpecN</span></a> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0 : <a class="idref" href="mathcomp.algebra.rat.html#divq_spec"><span class="id" title="inductive">divq_spec</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> 0 0<br/> +| <a name="DivqSpecP"><span class="id" title="constructor">DivqSpecP</span></a> <span class="id" title="var">k</span> <span class="id" title="var">x</span> <span class="id" title="keyword">of</span> <a class="idref" href="mathcomp.algebra.rat.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 : <a class="idref" href="mathcomp.algebra.rat.html#divq_spec"><span class="id" title="inductive">divq_spec</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.rat.html#k"><span class="id" title="variable">k</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +</div> + +<div class="doc"> + replaces fracqP +</div> +<div class="code"> +<span class="id" title="keyword">Lemma</span> <a name="divqP"><span class="id" title="lemma">divqP</span></a> <span class="id" title="var">n</span> <span class="id" title="var">d</span> : <a class="idref" href="mathcomp.algebra.rat.html#divq_spec"><span class="id" title="inductive">divq_spec</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="divq_eq"><span class="id" title="lemma">divq_eq</span></a> (<span class="id" title="var">nx</span> <span class="id" title="var">dx</span> <span class="id" title="var">ny</span> <span class="id" title="var">dy</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) :<br/> + <a class="idref" href="mathcomp.algebra.rat.html#dx"><span class="id" title="variable">dx</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#dy"><span class="id" title="variable">dy</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#nx"><span class="id" title="variable">nx</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#dx"><span class="id" title="variable">dx</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ny"><span class="id" title="variable">ny</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#dy"><span class="id" title="variable">dy</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#nx"><span class="id" title="variable">nx</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#dy"><span class="id" title="variable">dy</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ny"><span class="id" title="variable">ny</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#dx"><span class="id" title="variable">dx</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">CoInductive</span> <a name="rat_spec"><span class="id" title="inductive">rat_spec</span></a> <span class="comment">(* (x : rat) *)</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <span class="id" title="keyword">Type</span> :=<br/> + <a name="Rat_spec"><span class="id" title="constructor">Rat_spec</span></a> (<span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) (<span class="id" title="var">d</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a>) & <a class="idref" href="mathcomp.ssreflect.div.html#coprime"><span class="id" title="definition">coprime</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><br/> + : <a class="idref" href="mathcomp.algebra.rat.html#rat_spec"><span class="id" title="inductive">rat_spec</span></a> <span class="comment">(* x *)</span> (<a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a>) <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ratP"><span class="id" title="lemma">ratP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat_spec"><span class="id" title="inductive">rat_spec</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) (<a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="coprimeq_num"><span class="id" title="lemma">coprimeq_num</span></a> <span class="id" title="var">n</span> <span class="id" title="var">d</span> : <a class="idref" href="mathcomp.ssreflect.div.html#coprime"><span class="id" title="definition">coprime</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="coprimeq_den"><span class="id" title="lemma">coprimeq_den</span></a> <span class="id" title="var">n</span> <span class="id" title="var">d</span> :<br/> + <a class="idref" href="mathcomp.ssreflect.div.html#coprime"><span class="id" title="definition">coprime</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#521bb1f21db4ea2eead2a81dcc1b61f3"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">if</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">then</span></a> 1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#0348819abaa88c2cd747e8fa60dde7ae"><span class="id" title="notation">else</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="denqVz"><span class="id" title="lemma">denqVz</span></a> (<span class="id" title="var">i</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) : <a class="idref" href="mathcomp.algebra.rat.html#i"><span class="id" title="variable">i</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#i"><span class="id" title="variable">i</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="numqE"><span class="id" title="lemma">numqE</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">)%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">)%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="denqP"><span class="id" title="lemma">denqP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">{</span></a><span class="id" title="var">d</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.ssreflect.ssrnat.html#361454269931ea8643f7b402f2ab7222"><span class="id" title="notation">.+1</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Specif.html#5b63cb9ed0fed82566685c66e56592e4"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="normq"><span class="id" title="definition">normq</span></a> (<span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> := <a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">)%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="le_rat"><span class="id" title="definition">le_rat</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) := <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> +<span class="id" title="keyword">Definition</span> <a name="lt_rat"><span class="id" title="definition">lt_rat</span></a> (<span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) := <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="gt_rat0"><span class="id" title="lemma">gt_rat0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#lt_rat"><span class="id" title="definition">lt_rat</span></a> 0 <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lt_rat0"><span class="id" title="lemma">lt_rat0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#lt_rat"><span class="id" title="definition">lt_rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ge_rat0"><span class="id" title="lemma">ge_rat0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="le_rat0"><span class="id" title="lemma">le_rat0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="le_rat0D"><span class="id" title="lemma">le_rat0D</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 (<a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="le_rat0M"><span class="id" title="lemma">le_rat0M</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 (<a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="le_rat0_anti"><span class="id" title="lemma">le_rat0_anti</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> 0.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sgr_numq_div"><span class="id" title="lemma">sgr_numq_div</span></a> (<span class="id" title="var">n</span> <span class="id" title="var">d</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#int"><span class="id" title="inductive">int</span></a>) : <a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.rat.html#68b5f224cc630da7cd6aa06b63571aa7"><span class="id" title="notation">Q</span></a>)) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="subq_ge0"><span class="id" title="lemma">subq_ge0</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 (<a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="le_rat_total"><span class="id" title="lemma">le_rat_total</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#total"><span class="id" title="definition">total</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="numq_sign_mul"><span class="id" title="lemma">numq_sign_mul</span></a> (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.rat.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.rat.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="numq_div_lt0"><span class="id" title="lemma">numq_div_lt0</span></a> <span class="id" title="var">n</span> <span class="id" title="var">d</span> : <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> 0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a><br/> + (<a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>) <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0)%<span class="id" title="var">R</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0)%<span class="id" title="var">R</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#ef177bde7d01ae97c98f9cba81f6c95b"><span class="id" title="notation">(+)</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0)%<span class="id" title="var">R</span>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="normr_num_div"><span class="id" title="lemma">normr_num_div</span></a> <span class="id" title="var">n</span> <span class="id" title="var">d</span> : <a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>)<a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> (<a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#d"><span class="id" title="variable">d</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="norm_ratN"><span class="id" title="lemma">norm_ratN</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#normq"><span class="id" title="definition">normq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#normq"><span class="id" title="definition">normq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="ge_rat0_norm"><span class="id" title="lemma">ge_rat0_norm</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> 0 <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#normq"><span class="id" title="definition">normq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="lt_rat_def"><span class="id" title="lemma">lt_rat_def</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#lt_rat"><span class="id" title="definition">lt_rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#b1eeadc2feabc7422252baa895418c7b"><span class="id" title="notation">!=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#le_rat"><span class="id" title="definition">le_rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="ratLeMixin"><span class="id" title="definition">ratLeMixin</span></a> := <a class="idref" href="mathcomp.algebra.ssrnum.html#RealLeMixin"><span class="id" title="abbreviation">RealLeMixin</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat0D"><span class="id" title="lemma">le_rat0D</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat0M"><span class="id" title="lemma">le_rat0M</span></a> <a class="idref" href="mathcomp.algebra.rat.html#le_rat0_anti"><span class="id" title="lemma">le_rat0_anti</span></a><br/> + <a class="idref" href="mathcomp.algebra.rat.html#subq_ge0"><span class="id" title="lemma">subq_ge0</span></a> (@<a class="idref" href="mathcomp.algebra.rat.html#le_rat_total"><span class="id" title="lemma">le_rat_total</span></a> 0) <a class="idref" href="mathcomp.algebra.rat.html#norm_ratN"><span class="id" title="lemma">norm_ratN</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ge_rat0_norm"><span class="id" title="lemma">ge_rat0_norm</span></a> <a class="idref" href="mathcomp.algebra.rat.html#lt_rat_def"><span class="id" title="lemma">lt_rat_def</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_numDomainType</span> := <a class="idref" href="mathcomp.algebra.ssrnum.html#Num.NumDomain.Exports.NumDomainType"><span class="id" title="abbreviation">NumDomainType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratLeMixin"><span class="id" title="definition">ratLeMixin</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_numFieldType</span> := <a class="idref" href="mathcomp.algebra.ssrnum.html#a7441f0a0e6a98d4d20f782d49891896"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#a7441f0a0e6a98d4d20f782d49891896"><span class="id" title="notation">numFieldType</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#a7441f0a0e6a98d4d20f782d49891896"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#a7441f0a0e6a98d4d20f782d49891896"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_realDomainType</span> := <a class="idref" href="mathcomp.algebra.ssrnum.html#Num.RealDomain.Exports.RealDomainType"><span class="id" title="abbreviation">RealDomainType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> (@<a class="idref" href="mathcomp.algebra.rat.html#le_rat_total"><span class="id" title="lemma">le_rat_total</span></a> 0).<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">rat_realFieldType</span> := <a class="idref" href="mathcomp.algebra.ssrnum.html#9bd0f21dc8f37cb47d141588c0e6729b"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#9bd0f21dc8f37cb47d141588c0e6729b"><span class="id" title="notation">realFieldType</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#9bd0f21dc8f37cb47d141588c0e6729b"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#9bd0f21dc8f37cb47d141588c0e6729b"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="numq_ge0"><span class="id" title="lemma">numq_ge0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="numq_le0"><span class="id" title="lemma">numq_le0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="numq_gt0"><span class="id" title="lemma">numq_gt0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="numq_lt0"><span class="id" title="lemma">numq_lt0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="sgr_numq"><span class="id" title="lemma">sgr_numq</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.ssrint.html#sgz"><span class="id" title="definition">sgz</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#sgz"><span class="id" title="definition">sgz</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="denq_mulr_sign"><span class="id" title="lemma">denq_mulr_sign</span></a> (<span class="id" title="var">b</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#bool"><span class="id" title="inductive">bool</span></a>) <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> (<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">(</span></a>-1<a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">)</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#fb22424322c3d7eb9b837dfca65ce21e"><span class="id" title="notation">^+</span></a> <a class="idref" href="mathcomp.algebra.rat.html#b"><span class="id" title="variable">b</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="denq_norm"><span class="id" title="lemma">denq_norm</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="rat_archimedean"><span class="id" title="lemma">rat_archimedean</span></a> : <a class="idref" href="mathcomp.algebra.ssrnum.html#Num.archimedean_axiom"><span class="id" title="definition">Num.archimedean_axiom</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#faa7b03f15fa8c0b383b6f3802b37e9e"><span class="id" title="notation">[</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#faa7b03f15fa8c0b383b6f3802b37e9e"><span class="id" title="notation">numDomainType</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#faa7b03f15fa8c0b383b6f3802b37e9e"><span class="id" title="notation">of</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#faa7b03f15fa8c0b383b6f3802b37e9e"><span class="id" title="notation">]</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">archiType</span> := <a class="idref" href="mathcomp.algebra.ssrnum.html#Num.ArchimedeanField.Exports.ArchiFieldType"><span class="id" title="abbreviation">ArchiFieldType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat_archimedean"><span class="id" title="lemma">rat_archimedean</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="QintPred"><span class="id" title="section">QintPred</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="Qint"><span class="id" title="definition">Qint</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">qualify</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">a</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">|</span></a> <a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Fact</span> <a name="Qint_key"><span class="id" title="lemma">Qint_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_key"><span class="id" title="inductive">pred_key</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint"><span class="id" title="definition">Qint</span></a>. <br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qint_keyed</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#KeyedQualifier"><span class="id" title="definition">KeyedQualifier</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint_key"><span class="id" title="lemma">Qint_key</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="Qint_def"><span class="id" title="lemma">Qint_def</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint"><span class="id" title="definition">Qint</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.ssreflect.eqtype.html#17d28d004d0863cb022d4ce832ddaaae"><span class="id" title="notation">==</span></a> 1<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>. <br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="numqK"><span class="id" title="lemma">numqK</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint"><span class="id" title="definition">Qint</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">,</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cancel"><span class="id" title="definition">cancel</span></a> (<span class="id" title="keyword">fun</span> <span class="id" title="var">x</span> ⇒ <a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="mathcomp.algebra.ssrint.html#intr"><span class="id" title="abbreviation">intr</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#5c59b35a0b51db520cf1fba473ecf127"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="QintP"><span class="id" title="lemma">QintP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">z</span><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>) (<a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint"><span class="id" title="definition">Qint</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="Qint_subring_closed"><span class="id" title="lemma">Qint_subring_closed</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.subring_closed"><span class="id" title="abbreviation">subring_closed</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint"><span class="id" title="definition">Qint</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qint_opprPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.OpprPred"><span class="id" title="definition">OpprPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint_subring_closed"><span class="id" title="lemma">Qint_subring_closed</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qint_addrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.AddrPred"><span class="id" title="definition">AddrPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint_subring_closed"><span class="id" title="lemma">Qint_subring_closed</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qint_mulrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.MulrPred"><span class="id" title="definition">MulrPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint_subring_closed"><span class="id" title="lemma">Qint_subring_closed</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qint_zmodPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.ZmodPred"><span class="id" title="definition">ZmodPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint_subring_closed"><span class="id" title="lemma">Qint_subring_closed</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qint_semiringPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.SemiringPred"><span class="id" title="definition">SemiringPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint_subring_closed"><span class="id" title="lemma">Qint_subring_closed</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qint_smulrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.SmulrPred"><span class="id" title="definition">SmulrPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint_subring_closed"><span class="id" title="lemma">Qint_subring_closed</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qint_subringPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.SubringPred"><span class="id" title="definition">SubringPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint_subring_closed"><span class="id" title="lemma">Qint_subring_closed</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.rat.html#QintPred"><span class="id" title="section">QintPred</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="QnatPred"><span class="id" title="section">QnatPred</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="Qnat"><span class="id" title="definition">Qnat</span></a> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">[</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">qualify</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">a</span></a> <span class="id" title="var">x</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint"><span class="id" title="definition">Qint</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#3838d61fb3e8125493e649946f677b04"><span class="id" title="notation">]</span></a>.<br/> +<span class="id" title="keyword">Fact</span> <a name="Qnat_key"><span class="id" title="lemma">Qnat_key</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#pred_key"><span class="id" title="inductive">pred_key</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qnat"><span class="id" title="definition">Qnat</span></a>. <br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qnat_keyed</span> := <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#KeyedQualifier"><span class="id" title="definition">KeyedQualifier</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qnat_key"><span class="id" title="lemma">Qnat_key</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="Qnat_def"><span class="id" title="lemma">Qnat_def</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qnat"><span class="id" title="definition">Qnat</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">is</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#1e40fee506a85b20590ef299005b003d"><span class="id" title="notation">a</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qint"><span class="id" title="definition">Qint</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">&&</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#49ac24efa716d8b0ee8943bc1d1769a9"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="QnatP"><span class="id" title="lemma">QnatP</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#reflect"><span class="id" title="abbreviation">reflect</span></a> (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">∃</span></a> <span class="id" title="var">n</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Datatypes.html#nat"><span class="id" title="inductive">nat</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#84eb6d2849dbf3581b1c0c05add5f2d8"><span class="id" title="notation">,</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">R</span></a>) (<a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qnat"><span class="id" title="definition">Qnat</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="Qnat_semiring_closed"><span class="id" title="lemma">Qnat_semiring_closed</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.semiring_closed"><span class="id" title="abbreviation">semiring_closed</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qnat"><span class="id" title="definition">Qnat</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qnat_addrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.AddrPred"><span class="id" title="definition">AddrPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qnat_semiring_closed"><span class="id" title="lemma">Qnat_semiring_closed</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qnat_mulrPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.MulrPred"><span class="id" title="definition">MulrPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qnat_semiring_closed"><span class="id" title="lemma">Qnat_semiring_closed</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">Qnat_semiringPred</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.SemiringPred"><span class="id" title="definition">SemiringPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#Qnat_semiring_closed"><span class="id" title="lemma">Qnat_semiring_closed</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.rat.html#QnatPred"><span class="id" title="section">QnatPred</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="natq_div"><span class="id" title="lemma">natq_div</span></a> <span class="id" title="var">m</span> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#aa34fd1c61c5cf0a3356b624a5d2afed"><span class="id" title="notation">%|</span></a> <a class="idref" href="mathcomp.algebra.rat.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#m"><span class="id" title="variable">m</span></a> <a class="idref" href="mathcomp.ssreflect.div.html#df17451da28eb630dbb51b12706ba39e"><span class="id" title="notation">%/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">)%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#m"><span class="id" title="variable">m</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#8f9364556521ebb498093f28eea2240f"><span class="id" title="notation">:></span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="InRing"><span class="id" title="section">InRing</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="InRing.R"><span class="id" title="variable">R</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Definition</span> <a name="ratr"><span class="id" title="definition">ratr</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#InRing.R"><span class="id" title="variable">R</span></a> := <a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#numq"><span class="id" title="definition">numq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">)%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#denq"><span class="id" title="definition">denq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">)%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ratr_int"><span class="id" title="lemma">ratr_int</span></a> <span class="id" title="var">z</span> : <a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#z"><span class="id" title="variable">z</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">%:~</span></a><a class="idref" href="mathcomp.algebra.ssrint.html#626a4f68393e32b84ab75f15f785f640"><span class="id" title="notation">R</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ratr_nat"><span class="id" title="lemma">ratr_nat</span></a> <span class="id" title="var">n</span> : <a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">R</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#n"><span class="id" title="variable">n</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">%:</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#af5c1d7e13410a0a6c3dff5441ac8477"><span class="id" title="notation">R</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rpred_rat"><span class="id" title="lemma">rpred_rat</span></a> <span class="id" title="var">S</span> (<span class="id" title="var">ringS</span> : @<a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Pred.Exports.divringPred"><span class="id" title="abbreviation">divringPred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InRing.R"><span class="id" title="variable">R</span></a> <a class="idref" href="mathcomp.algebra.rat.html#S"><span class="id" title="variable">S</span></a>) (<span class="id" title="var">kS</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#keyed_pred"><span class="id" title="record">keyed_pred</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ringS"><span class="id" title="variable">ringS</span></a>) <span class="id" title="var">a</span> :<br/> + <a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#a"><span class="id" title="variable">a</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">\</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrbool.html#46c9e8232fa09401e24f1934bb65029f"><span class="id" title="notation">in</span></a> <a class="idref" href="mathcomp.algebra.rat.html#kS"><span class="id" title="variable">kS</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.rat.html#InRing"><span class="id" title="section">InRing</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="Fmorph"><span class="id" title="section">Fmorph</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Type</span> <span class="id" title="var">rR</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.UnitRing.Exports.unitRingType"><span class="id" title="abbreviation">unitRingType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="fmorph_rat"><span class="id" title="lemma">fmorph_rat</span></a> (<span class="id" title="var">aR</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Field.Exports.fieldType"><span class="id" title="abbreviation">fieldType</span></a>) <span class="id" title="var">rR</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.rat.html#aR"><span class="id" title="variable">aR</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rR"><span class="id" title="variable">rR</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>) <span class="id" title="var">a</span> :<br/> + <a class="idref" href="mathcomp.algebra.rat.html#f"><span class="id" title="variable">f</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#a"><span class="id" title="variable">a</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#a"><span class="id" title="variable">a</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="fmorph_eq_rat"><span class="id" title="lemma">fmorph_eq_rat</span></a> <span class="id" title="var">rR</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">{</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rR"><span class="id" title="variable">rR</span></a><a class="idref" href="mathcomp.algebra.ssralg.html#0c709ebe43ddbd7719f75250a7b916d9"><span class="id" title="notation">}</span></a>) : <a class="idref" href="mathcomp.algebra.rat.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#2500d48ed8e862ccfda98a44dff88963"><span class="id" title="notation">=1</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <span class="id" title="var">_</span>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.rat.html#Fmorph"><span class="id" title="section">Fmorph</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="Linear"><span class="id" title="section">Linear</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Implicit</span> <span class="id" title="keyword">Types</span> (<span class="id" title="var">U</span> <span class="id" title="var">V</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lmodule.Exports.lmodType"><span class="id" title="abbreviation">lmodType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>) (<span class="id" title="var">A</span> <span class="id" title="var">B</span> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Lalgebra.Exports.lalgType"><span class="id" title="abbreviation">lalgType</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rat_linear"><span class="id" title="lemma">rat_linear</span></a> <span class="id" title="var">U</span> <span class="id" title="var">V</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.rat.html#U"><span class="id" title="variable">U</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#V"><span class="id" title="variable">V</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.additive"><span class="id" title="abbreviation">additive</span></a> <a class="idref" href="mathcomp.algebra.rat.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Linear.Exports.linear"><span class="id" title="abbreviation">linear</span></a> <a class="idref" href="mathcomp.algebra.rat.html#f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rat_lrmorphism"><span class="id" title="lemma">rat_lrmorphism</span></a> <span class="id" title="var">A</span> <span class="id" title="var">B</span> (<span class="id" title="var">f</span> : <a class="idref" href="mathcomp.algebra.rat.html#A"><span class="id" title="variable">A</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.rat.html#B"><span class="id" title="variable">B</span></a>) : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.rmorphism"><span class="id" title="abbreviation">rmorphism</span></a> <a class="idref" href="mathcomp.algebra.rat.html#f"><span class="id" title="variable">f</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#d43e996736952df71ebeeae74d10a287"><span class="id" title="notation">→</span></a> <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.LRMorphism.Exports.lrmorphism"><span class="id" title="abbreviation">lrmorphism</span></a> <a class="idref" href="mathcomp.algebra.rat.html#f"><span class="id" title="variable">f</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.rat.html#Linear"><span class="id" title="section">Linear</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Section</span> <a name="InPrealField"><span class="id" title="section">InPrealField</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Variable</span> <a name="InPrealField.F"><span class="id" title="variable">F</span></a> : <a class="idref" href="mathcomp.algebra.ssrnum.html#Num.NumField.Exports.numFieldType"><span class="id" title="abbreviation">numFieldType</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Fact</span> <a name="ratr_is_rmorphism"><span class="id" title="lemma">ratr_is_rmorphism</span></a> : <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.rmorphism"><span class="id" title="abbreviation">rmorphism</span></a> (@<a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ratr_additive</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.Additive.Exports.Additive"><span class="id" title="abbreviation">Additive</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratr_is_rmorphism"><span class="id" title="lemma">ratr_is_rmorphism</span></a>.<br/> +<span class="id" title="keyword">Canonical</span> <span class="id" title="var">ratr_rmorphism</span> := <a class="idref" href="mathcomp.algebra.ssralg.html#GRing.RMorphism.Exports.RMorphism"><span class="id" title="abbreviation">RMorphism</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratr_is_rmorphism"><span class="id" title="lemma">ratr_is_rmorphism</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ler_rat"><span class="id" title="lemma">ler_rat</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">mono</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ltr_rat"><span class="id" title="lemma">ltr_rat</span></a> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">{</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">mono</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">(</span></a>@<a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">:</span></a> <span class="id" title="var">x</span> <span class="id" title="var">y</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">/</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#y"><span class="id" title="variable">y</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssrfun.html#cedeb4d71ab31ea655ad3d06a9c296b3"><span class="id" title="notation">}</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ler0q"><span class="id" title="lemma">ler0q</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="lerq0"><span class="id" title="lemma">lerq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#1065783963a393d1eafa2137291f2495"><span class="id" title="notation">≤</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ltr0q"><span class="id" title="lemma">ltr0q</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a>0 <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ltrq0"><span class="id" title="lemma">ltrq0</span></a> <span class="id" title="var">x</span> : <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">(</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#388c172bf8d34ef0bf11898cd56f8d7b"><span class="id" title="notation"><</span></a> 0<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">)</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ratr_sg"><span class="id" title="lemma">ratr_sg</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>) <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.rat.html#sgr"><span class="id" title="abbreviation">sgr</span></a> (<a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="ratr_norm"><span class="id" title="lemma">ratr_norm</span></a> <span class="id" title="var">x</span> : <a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#1c39bf18749e5cc609e83c0a0ba5a372"><span class="id" title="notation">=</span></a> <a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">`|</span></a><a class="idref" href="mathcomp.algebra.rat.html#ratr"><span class="id" title="definition">ratr</span></a> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField.F"><span class="id" title="variable">F</span></a> <a class="idref" href="mathcomp.algebra.rat.html#x"><span class="id" title="variable">x</span></a><a class="idref" href="mathcomp.algebra.ssrnum.html#c536f9a86d3c053391521360ac3f5a61"><span class="id" title="notation">|</span></a>.<br/> + +<br/> +<span class="id" title="keyword">End</span> <a class="idref" href="mathcomp.algebra.rat.html#InPrealField"><span class="id" title="section">InPrealField</span></a>.<br/> + +<br/> + +<br/> +</div> + +<div class="doc"> + Conntecting rationals to the ring an field tactics +</div> +<div class="code"> + +<br/> +<span class="id" title="keyword">Ltac</span> <span class="id" title="var">rat_to_ring</span> :=<br/> + <span class="id" title="tactic">rewrite</span> -?[0%<span class="id" title="var">Q</span>]/(0 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>)%<span class="id" title="var">R</span> -?[1%<span class="id" title="var">Q</span>]/(1 <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>)%<span class="id" title="var">R</span><br/> + -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#4c949b742776a07138bf0d77b27a0a1f"><span class="id" title="notation">-</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>)%<span class="id" title="var">R</span> -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#d8dadf98849e120173c7cdacda1d60b8"><span class="id" title="notation">/</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>)%<span class="id" title="var">R</span><br/> + -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#05d3ce00809c91b931b44ec9c44a5881"><span class="id" title="notation">+</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>)%<span class="id" title="var">R</span> -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#9ce2bfdb4399105085a0822f2e92f17c"><span class="id" title="notation">×</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>)%<span class="id" title="var">R</span><br/> + -?[(<a class="idref" href="mathcomp.algebra.rat.html#76eb5e89315fa8c70430d629db68294c"><span class="id" title="notation">-</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span>]/(<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <span class="id" title="var">_</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>)%<span class="id" title="var">R</span> -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#1cb2aecc2bd1d043a7247d53080d33f4"><span class="id" title="notation">^-1</span></a>)%<span class="id" title="var">Q</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.ssr.ssreflect.html#4509b22bf26e3d6d771897e22bd8bc8f"><span class="id" title="notation">:</span></a> <a class="idref" href="mathcomp.algebra.rat.html#rat"><span class="id" title="record">rat</span></a>)%<span class="id" title="var">R</span> /=.<br/> + +<br/> +<span class="id" title="keyword">Ltac</span> <span class="id" title="var">ring_to_rat</span> :=<br/> + <span class="id" title="tactic">rewrite</span> -?[0%<span class="id" title="var">R</span>]/0%<span class="id" title="var">Q</span> -?[1%<span class="id" title="var">R</span>]/1%<span class="id" title="var">Q</span><br/> + -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#d70623330b2787db6b196e37db7d8f45"><span class="id" title="notation">-</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">R</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#4c949b742776a07138bf0d77b27a0a1f"><span class="id" title="notation">-</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span> -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#4fa85b0aa898c2a7e18c3b076438c2e7"><span class="id" title="notation">/</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">R</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#d8dadf98849e120173c7cdacda1d60b8"><span class="id" title="notation">/</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span><br/> + -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#ae4d81913e6239182a9ac7467ffde8cd"><span class="id" title="notation">+</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">R</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#05d3ce00809c91b931b44ec9c44a5881"><span class="id" title="notation">+</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span> -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#22058a36a53dac65c94ca403bc62650a"><span class="id" title="notation">×</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">R</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#9ce2bfdb4399105085a0822f2e92f17c"><span class="id" title="notation">×</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span><br/> + -?[(<a class="idref" href="mathcomp.algebra.ssralg.html#941c6d086004545bd62614d0213e75e5"><span class="id" title="notation">-</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">R</span>]/(<a class="idref" href="mathcomp.algebra.rat.html#76eb5e89315fa8c70430d629db68294c"><span class="id" title="notation">-</span></a> <span class="id" title="var">_</span>)%<span class="id" title="var">Q</span> -?[(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.ssralg.html#f3016d4e55aa553d3e912592ec65e342"><span class="id" title="notation">^-1</span></a>)%<span class="id" title="var">R</span>]/(<span class="id" title="var">_</span> <a class="idref" href="mathcomp.algebra.rat.html#1cb2aecc2bd1d043a7247d53080d33f4"><span class="id" title="notation">^-1</span></a>)%<span class="id" title="var">Q</span> /=.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rat_ring_theory"><span class="id" title="lemma">rat_ring_theory</span></a> : (<a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.setoid_ring.Ring_theory.html#ring_theory"><span class="id" title="record">ring_theory</span></a> 0%<span class="id" title="var">Q</span> 1%<span class="id" title="var">Q</span> <a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#subq"><span class="id" title="definition">subq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#oppq"><span class="id" title="definition">oppq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#eq"><span class="id" title="inductive">eq</span></a>).<br/> + +<br/> +<span class="id" title="keyword">Require</span> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.setoid_ring.Field_theory.html#"><span class="id" title="library">setoid_ring.Field_theory</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.setoid_ring.Field_tac.html#"><span class="id" title="library">setoid_ring.Field_tac</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Lemma</span> <a name="rat_field_theory"><span class="id" title="lemma">rat_field_theory</span></a> : <br/> + <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.setoid_ring.Field_theory.html#field_theory"><span class="id" title="record">Field_theory.field_theory</span></a> 0%<span class="id" title="var">Q</span> 1%<span class="id" title="var">Q</span> <a class="idref" href="mathcomp.algebra.rat.html#addq"><span class="id" title="definition">addq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#mulq"><span class="id" title="definition">mulq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#subq"><span class="id" title="definition">subq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#oppq"><span class="id" title="definition">oppq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#divq"><span class="id" title="definition">divq</span></a> <a class="idref" href="mathcomp.algebra.rat.html#invq"><span class="id" title="definition">invq</span></a> <a class="idref" href="http://coq.inria.fr/distrib/8.8.0/stdlib//Coq.Init.Logic.html#eq"><span class="id" title="inductive">eq</span></a>.<br/> + +<br/> +<span class="id" title="keyword">Add</span> <span class="id" title="var">Field</span> <span class="id" title="var">rat_field</span> : <a class="idref" href="mathcomp.algebra.rat.html#rat_field_theory"><span class="id" title="lemma">rat_field_theory</span></a>.<br/> +</div> +</div> + +<div id="footer"> +<hr/><a href="index.html">Index</a><hr/>This page has been generated by <a href="http://coq.inria.fr/">coqdoc</a> +</div> + +</div> + +</body> +</html>
\ No newline at end of file |
