Lemma Dcuts_mult_finite : Dcuts_def_finite Dcuts_mult_val. Proof. revert X_finite Y_finite. apply hinhfun2. intros x y. exists (pr1 x * pr1 y). unfold neg ; apply (hinhuniv (P := make_hProp _ isapropempty)) ; intros xy. generalize (isdecrel_ltNonnegativeRationals (pr1 (pr1 xy)) (pr1 x)) ; apply sumofmaps ; intros Hx'. - generalize (isdecrel_ltNonnegativeRationals (pr2 (pr1 xy)) (pr1 y)) ; apply sumofmaps ; intros Hy'. + apply (isirrefl_isStrongOrder ltNonnegativeRationals (pr1 x * pr1 y)). pattern (pr1 x * pr1 y) at 1 ; rewrite (pr1 (pr2 xy)). now apply multNonnegativeRationals_ltcompat. + apply (pr2 y). apply Y_bot with (1 := pr2 (pr2 (pr2 xy))). now apply notlt_geNonnegativeRationals ; apply Hy'. - apply (pr2 x). apply X_bot with (1 := pr1 (pr2 (pr2 xy))). now apply notlt_geNonnegativeRationals ; apply Hx'. Qed.
Require Import UniMath.MoreFoundations.Orders. Require Import UniMath.MoreFoundations.Tactics. Require Import UniMath.MoreFoundations.Notations. Require Import UniMath.RealNumbers.Sets. Require Import UniMath.OrderTheory.Lattice.Lattice. Require Import UniMath.RealNumbers.Prelim. Require Import UniMath.RealNumbers.NonnegativeRationals.