Require Import
HoTT.Classes.implementations.peano_naturals
HoTT.Classes.implementations.natpair_integers
HoTT.Classes.interfaces.abstract_algebra
HoTT.Classes.interfaces.naturals
HoTT.Classes.interfaces.rationals
HoTT.Classes.interfaces.orders
HoTT.Classes.theory.groups
HoTT.Classes.theory.integers
HoTT.Classes.theory.dec_fields
HoTT.Classes.orders.sum
HoTT.Classes.orders.dec_fields
HoTT.Classes.orders.lattices
HoTT.Classes.theory.additional_operations
HoTT.Classes.tactics.ring_quote
HoTT.Classes.tactics.ring_tac.[Loading ML file number_string_notation_plugin.cmxs (using legacy method) ... done ]
Import Quoting.Instances.
Import NatPair.Instances.
Local Set Universe Minimization ToSet .
Section contents .
Context `{Funext} `{Univalence}.
Universe UQ .
Context {Q : Type @{UQ} } {Qap : Apart@{UQ UQ} Q}
{Qplus : Plus Q} {Qmult : Mult Q}
{Qzero : Zero Q} {Qone : One Q} {Qneg : Negate Q} {Qrecip : DecRecip Q}
{Qle : Le@{UQ UQ} Q} {Qlt : Lt@{UQ UQ} Q}
{QtoField : RationalsToField@{UQ UQ UQ UQ} Q}
{Qrats : Rationals@{UQ UQ UQ UQ UQ UQ UQ UQ UQ UQ} Q}
{Qtrivialapart : TrivialApart Q} {Qdec : DecidablePaths Q}
{Qmeet : Meet Q} {Qjoin : Join Q} {Qlattice : LatticeOrder Qle}
{Qle_total : TotalRelation (@le Q _)}
{Qabs : Abs Q}.
Global Instance rational_1_neq_0 : PropHolds (@apart Q _ 1 0 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
PropHolds (1 ≶ 0 )
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
PropHolds (1 ≶ 0 )
red .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
1 ≶ 0
apply trivial_apart.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
1 <> 0
solve_propholds.
Qed .
Record Qpos @{} : Type @{UQ} := mkQpos { pos : Q; is_pos : 0 < pos }.
Notation "Q+" := Qpos.
Global Instance Qpos_Q @{} : Cast Qpos Q := pos.
Arguments Qpos_Q /.
Lemma Qpos_plus_pr @{} : forall a b : Qpos, 0 < 'a + 'b.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+, 0 < ' a + ' b
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+, 0 < ' a + ' b
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
0 < ' a + ' b
apply semirings.pos_plus_compat;apply is_pos.
Qed .
Global Instance Qpos_plus @{} : Plus Qpos := fun a b => mkQpos _ (Qpos_plus_pr a b).
Global Instance pos_is_pos @{} : forall q : Q+, PropHolds (0 < ' q)
:= is_pos.
Lemma pos_eq @{} : forall a b : Q+, @paths Q (' a) (' b) -> a = b.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+, ' a = ' b -> a = b
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+, ' a = ' b -> a = b
intros [a Ea] [b Eb] E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a : Q Ea : 0 < ab : Q Eb : 0 < bE : ' {| pos := a; is_pos := Ea |} =
' {| pos := b; is_pos := Eb |}
{| pos := a; is_pos := Ea |} =
{| pos := b; is_pos := Eb |}
change (a = b) in E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a : Q Ea : 0 < ab : Q Eb : 0 < bE : a = b
{| pos := a; is_pos := Ea |} =
{| pos := b; is_pos := Eb |}
destruct E;apply ap;apply path_ishprop.
Qed .
Global Instance Qpos_isset : IsHSet Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
IsHSet Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
IsHSet Q+
apply (@HSet.ishset_hrel_subpaths _ (fun e d => ' e = ' d)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Reflexive (fun e d : Q+ => ' e = ' d)
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Reflexive (fun e d : Q+ => ' e = ' d)
intros e; reflexivity .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y : Q+, IsHProp (' x = ' y)
apply _.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y : Q+, ' x = ' y -> x = y
exact pos_eq.
Qed .
Global Instance Qpos_one @{} : One Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
One Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
One Q+
exists 1 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
0 < 1
apply lt_0_1.
Defined .
Global Instance Qpos_mult @{} : Mult Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Mult Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Mult Q+
intros a b;exists (' a * ' b).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
0 < ' a * ' b
solve_propholds.
Defined .
Global Instance qpos_plus_comm @{} : Commutative (@plus Q+ _).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Commutative plus
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Commutative plus
hnf .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y : Q+, x + y = y + x
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q+
x + y = y + x
apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q+
' (x + y) = ' (y + x)
change (' x + ' y = ' y + ' x).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q+
' x + ' y = ' y + ' x
apply plus_comm.
Qed .
Global Instance qpos_mult_comm @{} : Commutative (@mult Q+ _).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Commutative mult
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Commutative mult
hnf ;intros ;apply pos_eq,mult_comm.
Qed .
Global Instance pos_recip @{} : DecRecip Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
DecRecip Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
DecRecip Q+
intros e.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
Q+
exists (/ ' e).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
0 < / ' e
apply pos_dec_recip_compat.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
PropHolds (0 < ' e)
solve_propholds.
Defined .
Global Instance pos_of_nat @{} : Cast nat Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Cast nat Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Cast nat Q+
intros n.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q n : nat
Q+
destruct n as [|k].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Q+
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Q+
exists 1 ;apply lt_0_1.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q k : nat
Q+
exists (naturals_to_semiring nat Q (S k)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q k : nat
0 < naturals_to_semiring nat Q (k.+1 )%nat
induction k as [|k Ik].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
0 < naturals_to_semiring nat Q 1 %nat
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
0 < naturals_to_semiring nat Q 1 %nat
change (0 < 1 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
0 < 1
apply lt_0_1.
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q k : nat Ik : 0 < naturals_to_semiring nat Q (k.+1 )%nat
0 < naturals_to_semiring nat Q (k.+2 )%nat
change (0 < 1 + naturals_to_semiring nat Q (S k)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q k : nat Ik : 0 < naturals_to_semiring nat Q (k.+1 )%nat
0 < 1 + naturals_to_semiring nat Q (k.+1 )%nat
set (K := naturals_to_semiring nat Q (S k)) in *;clearbody K.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q k : nat K : Q Ik : 0 < K
0 < 1 + K
apply pos_plus_compat.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q k : nat K : Q Ik : 0 < K
PropHolds (0 < 1 )
* H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q k : nat K : Q Ik : 0 < K
PropHolds (0 < 1 )
apply lt_0_1.
* H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q k : nat K : Q Ik : 0 < K
PropHolds (0 < K)
trivial .
Defined .
Lemma pos_recip_r @{} : forall e : Q+, e / e = 1 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, e / e = 1
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, e / e = 1
intros ;apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' (e / e) = ' 1
unfold dec_recip,cast,pos_recip;simpl .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' e *
' {|
pos := / ' e;
is_pos :=
pos_dec_recip_compat (' e) (pos_is_pos e)
|} = 1
change (' e / ' e = 1 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' e / ' e = 1
apply dec_recip_inverse.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' e <> 0
apply lt_ne_flip.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
0 < ' e
solve_propholds.
Qed .
Lemma pos_recip_r' @{} : forall e : Q+, @paths Q (' e / ' e) 1 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, ' e / ' e = 1
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, ' e / ' e = 1
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' e / ' e = 1
change (' (e / e) = 1 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' (e / e) = 1
rewrite pos_recip_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' 1 = 1
reflexivity .
Qed .
Lemma pos_mult_1_r @{} : forall e : Q+, e * 1 = e.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, e * 1 = e
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, e * 1 = e
intros ;apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' (e * 1 ) = ' e
apply mult_1_r.
Qed .
Lemma pos_split2 @{} : forall e : Q+, e = e / 2 + e / 2 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, e = e / 2 + e / 2
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, e = e / 2 + e / 2
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
e = e / 2 + e / 2
path_via (e * (2 / 2 )). H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
e = e * (2 / 2 )
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
e = e * (2 / 2 )
rewrite pos_recip_r,pos_mult_1_r;reflexivity .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
e * (2 / 2 ) = e / 2 + e / 2
apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' (e * (2 / 2 )) = ' (e / 2 + e / 2 )
change (' e * (2 / 2 ) = ' e / 2 + ' e / 2 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' e * (2 / 2 ) = ' e / 2 + ' e / 2
ring_tac.ring_with_nat.
Qed .
Lemma pos_split3 @{} : forall e : Q+, e = e / 3 + e / 3 + e / 3 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, e = e / 3 + e / 3 + e / 3
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall e : Q+, e = e / 3 + e / 3 + e / 3
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
e = e / 3 + e / 3 + e / 3
path_via (e * (3 / 3 )). H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
e = e * (3 / 3 )
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
e = e * (3 / 3 )
rewrite pos_recip_r,pos_mult_1_r;reflexivity .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
e * (3 / 3 ) = e / 3 + e / 3 + e / 3
apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' (e * (3 / 3 )) = ' (e / 3 + e / 3 + e / 3 )
change (' e * (3 / 3 ) = ' e / 3 + ' e / 3 + ' e / 3 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
' e * (3 / 3 ) = ' e / 3 + ' e / 3 + ' e / 3
ring_tac.ring_with_nat.
Qed .
Global Instance Qpos_mult_assoc @{} : Associative (@mult Q+ _).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Associative mult
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Associative mult
hnf .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y z : Q+, x * (y * z) = x * y * z
intros ;apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y, z : Q+
' (x * (y * z)) = ' (x * y * z)
apply mult_assoc.
Qed .
Global Instance Qpos_plus_assoc @{} : Associative (@plus Q+ _).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Associative plus
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Associative plus
hnf .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y z : Q+, x + (y + z) = x + y + z
intros ;apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y, z : Q+
' (x + (y + z)) = ' (x + y + z)
apply plus_assoc.
Qed .
Global Instance Qpos_mult_1_l @{} : LeftIdentity (@mult Q+ _) 1 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
LeftIdentity mult 1
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
LeftIdentity mult 1
hnf ;intros ;apply pos_eq;apply mult_1_l.
Qed .
Global Instance Qpos_mult_1_r @{} : RightIdentity (@mult Q+ _) 1 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
RightIdentity mult 1
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
RightIdentity mult 1
hnf ;intros ;apply pos_eq;apply mult_1_r.
Qed .
Lemma pos_recip_through_plus @{} : forall a b c : Q+,
a + b = c * (a / c + b / c).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c : Q+, a + b = c * (a / c + b / c)
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c : Q+, a + b = c * (a / c + b / c)
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q+
a + b = c * (a / c + b / c)
path_via ((a + b) * (c / c)). H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q+
a + b = (a + b) * (c / c)
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q+
a + b = (a + b) * (c / c)
rewrite pos_recip_r;apply pos_eq,symmetry ,mult_1_r.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q+
(a + b) * (c / c) = c * (a / c + b / c)
apply pos_eq;ring_tac.ring_with_nat.
Qed .
Lemma pos_unconjugate @{} : forall a b : Q+, a * b / a = b.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+, a * b / a = b
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+, a * b / a = b
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
a * b / a = b
path_via (a / a * b). H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
a * b / a = a / a * b
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
a * b / a = a / a * b
apply pos_eq;ring_tac.ring_with_nat.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
a / a * b = b
rewrite pos_recip_r;apply Qpos_mult_1_l.
Qed .
Lemma Qpos_recip_1 : / 1 = 1 :> Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
/ 1 = 1
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
/ 1 = 1
apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
' (/ 1 ) = ' 1
exact dec_recip_1.
Qed .
Lemma Qpos_plus_mult_distr_l : @LeftDistribute Q+ mult plus.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
LeftDistribute mult plus
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
LeftDistribute mult plus
hnf .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c : Q+, a * (b + c) = a * b + a * c
intros ;apply pos_eq,plus_mult_distr_l.
Qed .
Global Instance Qpos_meet @{} : Meet Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Meet Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Meet Q+
intros a b.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
Q+
exists (meet (' a) (' b)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
0 < ' a ⊓ ' b
apply not_le_lt_flip.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
~ (' a ⊓ ' b ≤ 0 )
intros E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ⊓ ' b ≤ 0
Empty
destruct (total_meet_either (' a) (' b)) as [E1|E1];
rewrite E1 in E;(eapply le_iff_not_lt_flip;[exact E|]);
solve_propholds.
Defined .
Global Instance Qpos_join @{} : Join Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Join Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
Join Q+
intros a b.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
Q+
exists (join (' a) (' b)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
0 < ' a ⊔ ' b
apply not_le_lt_flip.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
~ (' a ⊔ ' b ≤ 0 )
intros E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ⊔ ' b ≤ 0
Empty
destruct (total_join_either (' a) (' b)) as [E1|E1];
rewrite E1 in E;(eapply le_iff_not_lt_flip;[exact E|]);
solve_propholds.
Defined .
Lemma Q_sum_eq_join_meet @{} : forall a b c d : Q, a + b = c + d ->
a + b = join a c + meet b d.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c d : Q,
a + b = c + d -> a + b = a ⊔ c + (b ⊓ d)
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c d : Q,
a + b = c + d -> a + b = a ⊔ c + (b ⊓ d)
intros ???? E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d
a + b = a ⊔ c + (b ⊓ d)
destruct (total le a c) as [E1|E1].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : a ≤ c
a + b = a ⊔ c + (b ⊓ d)
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : a ≤ c
a + b = a ⊔ c + (b ⊓ d)
rewrite (join_r _ _ E1).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : a ≤ c
a + b = c + (b ⊓ d)
rewrite meet_r;trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : a ≤ c
d ≤ b
apply (order_preserving (+ b)) in E1.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : a + b ≤ c + b
d ≤ b
rewrite E in E1.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : c + d ≤ c + b
d ≤ b
apply (order_reflecting (c +)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : c + d ≤ c + b
c + d ≤ c + b
trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : c ≤ a
a + b = a ⊔ c + (b ⊓ d)
rewrite (join_l _ _ E1).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : c ≤ a
a + b = a + (b ⊓ d)
rewrite meet_l;trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : c ≤ a
b ≤ d
apply (order_reflecting (a +)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : c ≤ a
a + b ≤ a + d
rewrite E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : c ≤ a
c + d ≤ a + d
apply (order_preserving (+ d)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q E : a + b = c + d E1 : c ≤ a
c ≤ a
trivial .
Qed .
Lemma Qpos_sum_eq_join_meet @{} : forall a b c d : Q+, a + b = c + d ->
a + b = join a c + meet b d.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c d : Q+,
a + b = c + d -> a + b = a ⊔ c + (b ⊓ d)
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c d : Q+,
a + b = c + d -> a + b = a ⊔ c + (b ⊓ d)
intros ???? E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q+ E : a + b = c + d
a + b = a ⊔ c + (b ⊓ d)
apply pos_eq;apply Q_sum_eq_join_meet.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q+ E : a + b = c + d
' a + ' b = ' c + ' d
change (' a + ' b) with (' (a + b)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, d : Q+ E : a + b = c + d
' (a + b) = ' c + ' d
rewrite E;reflexivity .
Qed .
Lemma Qpos_le_lt_min : forall a b : Q+, ' a <= ' b ->
exists c ca cb , a = c + ca /\ b = c + cb.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+,
' a ≤ ' b ->
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+,
' a ≤ ' b ->
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
intros a b E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
exists (a /2 ),(a/2 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
{cb : Q+ &
((a = (a / 2 + a / 2 )%mc) * (b = (a / 2 + cb)%mc))%type}
simple refine (exist _ _ _);simpl .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
Q+
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
Q+
exists (' (a / 2 ) + (' b - ' a)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
0 < ' (a / 2 ) + (' b - ' a)
apply nonneg_plus_lt_compat_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
0 ≤ ' b - ' a
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
0 ≤ ' b - ' a
apply (snd (flip_nonneg_minus _ _)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
' a ≤ ' b
trivial .
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
0 < ' (a / 2 )
solve_propholds.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
((a = (a / 2 + a / 2 )%mc) *
(b =
(a / 2 +
{|
pos := ' (a / 2 ) + (' b - ' a);
is_pos :=
nonneg_plus_lt_compat_r 0 (' (a / 2 ))
(' b - ' a)
(snd (flip_nonneg_minus (' a) (' b)) E)
(pos_is_pos (a / 2 ))
|})%mc))%type
split .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
a = a / 2 + a / 2
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
a = a / 2 + a / 2
apply pos_split2.
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
b =
a / 2 +
{|
pos := ' (a / 2 ) + (' b - ' a);
is_pos :=
nonneg_plus_lt_compat_r 0 (' (a / 2 )) (' b - ' a)
(snd (flip_nonneg_minus (' a) (' b)) E)
(pos_is_pos (a / 2 ))
|}
apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
' b =
' (a / 2 +
{|
pos := ' (a / 2 ) + (' b - ' a);
is_pos :=
nonneg_plus_lt_compat_r 0 (' (a / 2 ))
(' b - ' a)
(snd (flip_nonneg_minus (' a) (' b)) E)
(pos_is_pos (a / 2 ))
|})
unfold cast at 2 ;simpl .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
' b =
' (a / 2 ) +
' {|
pos := ' (a / 2 ) + (' b - ' a);
is_pos :=
nonneg_plus_lt_compat_r 0 (' (a / 2 ))
(' b - ' a)
(snd (flip_nonneg_minus (' a) (' b)) E)
(pos_mult_compat (' a) (' (/ 2 ))
(pos_is_pos a)
(pos_dec_recip_compat (' 2 )
(Qpos_plus_pr 1 1 )))
|}
unfold cast at 3 ;simpl .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
' b = ' (a / 2 ) + (' (a / 2 ) + (' b - ' a))
set (a':=a/2 );rewrite (pos_split2 a);unfold a';clear a'.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
' b =
' (a / 2 ) + (' (a / 2 ) + (' b - ' (a / 2 + a / 2 )))
ring_tac.ring_with_integers (NatPair.Z nat).
Qed .
Lemma Qpos_lt_min @{} : forall a b : Q+, exists c ca cb : Q+,
a = c + ca /\ b = c + cb.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+,
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q+,
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
destruct (total le (' a) (' b)) as [E|E].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' a ≤ ' b
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
apply Qpos_le_lt_min;trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : ' b ≤ ' a
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
apply Qpos_le_lt_min in E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q+ E : {c : Q+ &
{ca : Q+ &
{cb : Q+ &
((b = (c + ca)%mc) * (a = (c + cb)%mc))%type}}}
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
destruct E as [c [cb [ca [E1 E2]]]].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c, cb, ca : Q+ E1 : b = c + cb E2 : a = c + ca
{c : Q+ &
{ca : Q+ &
{cb : Q+ &
((a = (c + ca)%mc) * (b = (c + cb)%mc))%type}}}
exists c ,ca,cb;auto .
Qed .
Definition Qpos_diff : forall q r : Q, q < r -> Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, q < r -> Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, q < r -> Q+
intros q r E;exists (r -q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
0 < r - q
apply (snd (flip_pos_minus _ _) E).
Defined .
Lemma Qpos_diff_pr @{} : forall q r E , r = q + ' (Qpos_diff q r E).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall (q r : Q) (E : q < r),
r = q + ' Qpos_diff q r E
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall (q r : Q) (E : q < r),
r = q + ' Qpos_diff q r E
intros q r E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
r = q + ' Qpos_diff q r E
change (r = q + (r - q)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
r = q + (r - q)
abstract ring_tac.ring_with_integers (NatPair.Z nat).
Qed .
Lemma Qmeet_plus_l : forall a b c : Q, meet (a + b) (a + c) = a + meet b c.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c : Q, (a + b) ⊓ (a + c) = a + (b ⊓ c)
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c : Q, (a + b) ⊓ (a + c) = a + (b ⊓ c)
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q
(a + b) ⊓ (a + c) = a + (b ⊓ c)
destruct (total le b c) as [E|E].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q E : b ≤ c
(a + b) ⊓ (a + c) = a + (b ⊓ c)
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q E : b ≤ c
(a + b) ⊓ (a + c) = a + (b ⊓ c)
rewrite (meet_l _ _ E).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q E : b ≤ c
(a + b) ⊓ (a + c) = a + b
apply meet_l.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q E : b ≤ c
a + b ≤ a + c
apply (order_preserving (a +)),E.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q E : c ≤ b
(a + b) ⊓ (a + c) = a + (b ⊓ c)
rewrite (meet_r _ _ E).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q E : c ≤ b
(a + b) ⊓ (a + c) = a + c
apply meet_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q E : c ≤ b
a + c ≤ a + b
apply (order_preserving (a +)),E.
Qed .
Lemma Qabs_nonneg @{} : forall q : Q, 0 <= abs q.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, 0 ≤ abs q
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, 0 ≤ abs q
intros q;destruct (total_abs_either q) as [E|E];destruct E as [E1 E2];rewrite E2.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : 0 ≤ qE2 : abs q = q
0 ≤ q
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : 0 ≤ qE2 : abs q = q
0 ≤ q
trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : q ≤ 0 E2 : abs q = - q
0 ≤ - q
apply flip_nonneg_negate.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : q ≤ 0 E2 : abs q = - q
- - q ≤ 0
rewrite involutive;trivial .
Qed .
Lemma Qabs_nonpos_0 @{} : forall q : Q, abs q <= 0 -> q = 0 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, abs q ≤ 0 -> q = 0
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, abs q ≤ 0 -> q = 0
intros q E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0
q = 0
pose proof (antisymmetry le _ _ E (Qabs_nonneg _)) as E1.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0 E1 : abs q = 0
q = 0
destruct (total_abs_either q) as [[E2 E3]|[E2 E3]];rewrite E3 in E1.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0 E1 : q = 0 E2 : 0 ≤ qE3 : abs q = q
q = 0
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0 E1 : q = 0 E2 : 0 ≤ qE3 : abs q = q
q = 0
trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0 E1 : - q = 0 E2 : q ≤ 0 E3 : abs q = - q
q = 0
apply (injective (-)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0 E1 : - q = 0 E2 : q ≤ 0 E3 : abs q = - q
- q = - 0
rewrite negate_0.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0 E1 : - q = 0 E2 : q ≤ 0 E3 : abs q = - q
- q = 0
trivial .
Qed .
Lemma Qabs_0_or_pos : forall q : Q, q = 0 |_| 0 < abs q.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, ((q = 0 ) + (0 < abs q))%type
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, ((q = 0 ) + (0 < abs q))%type
intros q.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
((q = 0 ) + (0 < abs q))%type
destruct (le_or_lt (abs q) 0 ) as [E|E].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0
((q = 0 ) + (0 < abs q))%type
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0
((q = 0 ) + (0 < abs q))%type
left .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0
q = 0
apply Qabs_nonpos_0.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : abs q ≤ 0
abs q ≤ 0
trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : 0 < abs q
((q = 0 ) + (0 < abs q))%type
right .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E : 0 < abs q
0 < abs q
trivial .
Qed .
Lemma Qabs_of_nonneg @{} : forall q : Q, 0 <= q -> abs q = q.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, 0 ≤ q -> abs q = q
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, 0 ≤ q -> abs q = q
intro ;apply ((abs_sig _).2 ).
Qed .
Lemma Qabs_of_nonpos : forall q : Q, q <= 0 -> abs q = - q.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, q ≤ 0 -> abs q = - q
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, q ≤ 0 -> abs q = - q
intro ;apply ((abs_sig _).2 ).
Qed .
Lemma Qabs_le_raw @{} : forall x : Q, x <= abs x.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x : Q, x ≤ abs x
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x : Q, x ≤ abs x
intros x;destruct (total_abs_either x) as [[E1 E2]|[E1 E2]].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : 0 ≤ xE2 : abs x = x
x ≤ abs x
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : 0 ≤ xE2 : abs x = x
x ≤ abs x
rewrite E2;reflexivity .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : x ≤ 0 E2 : abs x = - x
x ≤ abs x
transitivity (0 :Q);trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : x ≤ 0 E2 : abs x = - x
(0 : Q) ≤ abs x
rewrite E2.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : x ≤ 0 E2 : abs x = - x
0 ≤ - x
apply flip_nonpos_negate.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : x ≤ 0 E2 : abs x = - x
x ≤ 0
trivial .
Qed .
Lemma Qabs_neg @{} : forall x : Q, abs (- x) = abs x.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x : Q, abs (- x) = abs x
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x : Q, abs (- x) = abs x
intros x.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q
abs (- x) = abs x
destruct (total_abs_either x) as [[E1 E2]|[E1 E2]].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : 0 ≤ xE2 : abs x = x
abs (- x) = abs x
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : 0 ≤ xE2 : abs x = x
abs (- x) = abs x
rewrite E2.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : 0 ≤ xE2 : abs x = x
abs (- x) = x
path_via (- - x);[|rewrite involutive;trivial ]. H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : 0 ≤ xE2 : abs x = x
abs (- x) = - - x
apply ((abs_sig (- x)).2 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : 0 ≤ xE2 : abs x = x
- x ≤ 0
apply flip_nonneg_negate;trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : x ≤ 0 E2 : abs x = - x
abs (- x) = abs x
rewrite E2.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : x ≤ 0 E2 : abs x = - x
abs (- x) = - x
apply ((abs_sig (- x)).2 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q E1 : x ≤ 0 E2 : abs x = - x
0 ≤ - x
apply flip_nonpos_negate;trivial .
Qed .
Lemma Qabs_le_neg_raw : forall x : Q, - x <= abs x.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x : Q, - x ≤ abs x
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x : Q, - x ≤ abs x
intros x.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q
- x ≤ abs x
rewrite <-Qabs_neg.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x : Q
- x ≤ abs (- x)
apply Qabs_le_raw.
Qed .
Lemma Q_abs_le_pr @{} : forall x y : Q, abs x <= y <-> - y <= x /\ x <= y.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y : Q, abs x ≤ y <-> - y ≤ x ≤ y
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y : Q, abs x ≤ y <-> - y ≤ x ≤ y
intros x y;split .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q
abs x ≤ y -> - y ≤ x ≤ y
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q
abs x ≤ y -> - y ≤ x ≤ y
intros E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E : abs x ≤ y
- y ≤ x ≤ y
split .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E : abs x ≤ y
- y ≤ x
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E : abs x ≤ y
- y ≤ x
apply flip_le_negate.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E : abs x ≤ y
- x ≤ - - y
rewrite involutive.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E : abs x ≤ y
- x ≤ y
transitivity (abs x);trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E : abs x ≤ y
- x ≤ abs x
apply Qabs_le_neg_raw.
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E : abs x ≤ y
x ≤ y
transitivity (abs x);trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E : abs x ≤ y
x ≤ abs x
apply Qabs_le_raw.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q
- y ≤ x ≤ y -> abs x ≤ y
intros [E1 E2].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E1 : - y ≤ x E2 : x ≤ y
abs x ≤ y
destruct (total_abs_either x) as [[E3 E4]|[E3 E4]];rewrite E4.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E1 : - y ≤ x E2 : x ≤ y E3 : 0 ≤ xE4 : abs x = x
x ≤ y
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E1 : - y ≤ x E2 : x ≤ y E3 : 0 ≤ xE4 : abs x = x
x ≤ y
trivial .
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q x, y : Q E1 : - y ≤ x E2 : x ≤ y E3 : x ≤ 0 E4 : abs x = - x
- x ≤ y
apply flip_le_negate;rewrite involutive;trivial .
Qed .
Lemma Qabs_is_join @{} : forall q : Q, abs q = join (- q) q.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, abs q = - q ⊔ q
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, abs q = - q ⊔ q
intros q.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
abs q = - q ⊔ q
symmetry .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
- q ⊔ q = abs q
destruct (total_abs_either q) as [[E1 E2]|[E1 E2]];rewrite E2.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : 0 ≤ qE2 : abs q = q
- q ⊔ q = q
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : 0 ≤ qE2 : abs q = q
- q ⊔ q = q
apply join_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : 0 ≤ qE2 : abs q = q
- q ≤ q
transitivity (0 :Q);trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : 0 ≤ qE2 : abs q = q
- q ≤ (0 : Q)
apply flip_nonneg_negate;trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : q ≤ 0 E2 : abs q = - q
- q ⊔ q = - q
apply join_l.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : q ≤ 0 E2 : abs q = - q
q ≤ - q
transitivity (0 :Q);trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q E1 : q ≤ 0 E2 : abs q = - q
(0 : Q) ≤ - q
apply flip_nonpos_negate;trivial .
Qed .
Lemma Qlt_join : forall a b c : Q, a < c -> b < c ->
join a b < c.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c : Q, a < c -> b < c -> a ⊔ b < c
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b c : Q, a < c -> b < c -> a ⊔ b < c
intros a b c E1 E2.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b, c : Q E1 : a < c E2 : b < c
a ⊔ b < c
destruct (total le a b) as [E3|E3];rewrite ?(join_r _ _ E3),?(join_l _ _ E3);
trivial .
Qed .
Lemma Q_average_between @{} : forall q r : Q, q < r -> q < (q + r) / 2 < r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, q < r -> q < (q + r) / 2 < r
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, q < r -> q < (q + r) / 2 < r
intros q r E.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
q < (q + r) / 2 < r
split .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
q < (q + r) / 2
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
q < (q + r) / 2
apply flip_pos_minus.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
0 < (q + r) / 2 - q
assert (Hrw : (q + r) / 2 - q = (r - q) / 2 );[|rewrite Hrw;clear Hrw].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
(q + r) / 2 - q = (r - q) / 2
{ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
(q + r) / 2 - q = (r - q) / 2
path_via ((q + r) / 2 - 2 / 2 * q). H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
(q + r) / 2 - q = (q + r) / 2 - 2 / 2 * q
{ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
(q + r) / 2 - q = (q + r) / 2 - 2 / 2 * q
rewrite dec_recip_inverse;[|solve_propholds].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
(q + r) / 2 - q = (q + r) / 2 - 1 * q
rewrite mult_1_l;trivial .
} H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
(q + r) / 2 - 2 / 2 * q = (r - q) / 2
ring_tac.ring_with_integers (NatPair.Z nat).
} H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
0 < (r - q) / 2
apply pos_mult_compat;[|apply _].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
PropHolds (0 < r - q)
red .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
0 < r - q
apply (snd (flip_pos_minus _ _)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
q < r
trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
(q + r) / 2 < r
apply flip_pos_minus.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
0 < r - (q + r) / 2
assert (Hrw : r - (q + r) / 2 = (r - q) / 2 );[|rewrite Hrw;clear Hrw].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
r - (q + r) / 2 = (r - q) / 2
{ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
r - (q + r) / 2 = (r - q) / 2
path_via (2 / 2 * r - (q + r) / 2 ). H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
r - (q + r) / 2 = 2 / 2 * r - (q + r) / 2
{ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
r - (q + r) / 2 = 2 / 2 * r - (q + r) / 2
rewrite dec_recip_inverse;[|solve_propholds].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
r - (q + r) / 2 = 1 * r - (q + r) / 2
rewrite mult_1_l;trivial .
} H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
2 / 2 * r - (q + r) / 2 = (r - q) / 2
ring_tac.ring_with_integers (NatPair.Z nat).
} H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
0 < (r - q) / 2
apply pos_mult_compat;[|apply _].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
PropHolds (0 < r - q)
red .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
0 < r - q
apply (snd (flip_pos_minus _ _)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q E : q < r
q < r
trivial .
Qed .
Lemma path_avg_split_diff_l (q r : Q) : q + ((r - q) / 2 ) = (r + q) / 2 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
q + (r - q) / 2 = (r + q) / 2
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
q + (r - q) / 2 = (r + q) / 2
pattern q at 1 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(fun q0 : Q => q0 + (r - q) / 2 = (r + q) / 2 ) q
rewrite <- (mult_1_r q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
q * 1 + (r - q) / 2 = (r + q) / 2
pattern (1 : Q) at 1 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(fun q0 : Q => q * q0 + (r - q) / 2 = (r + q) / 2 )
(1 : Q)
rewrite <- (dec_recip_inverse 2 ) by solve_propholds.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
q * (2 / 2 ) + (r - q) / 2 = (r + q) / 2
rewrite (associativity q 2 (/2 )).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
q * 2 / 2 + (r - q) / 2 = (r + q) / 2
rewrite <- (distribute_r (q*2 ) (r-q) (/2 )).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(q * 2 + (r - q)) / 2 = (r + q) / 2
rewrite (distribute_l q 1 1 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(q * 1 + q * 1 + (r - q)) / 2 = (r + q) / 2
rewrite (mult_1_r q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(q + q + (r - q)) / 2 = (r + q) / 2
rewrite (commutativity (q+q) (r-q)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(r - q + (q + q)) / 2 = (r + q) / 2
rewrite <- (associativity r (-q) (q+q)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(r + (- q + (q + q))) / 2 = (r + q) / 2
rewrite (associativity (-q) q q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(r + (- q + q + q)) / 2 = (r + q) / 2
rewrite (plus_negate_l q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(r + (0 + q)) / 2 = (r + q) / 2
rewrite (plus_0_l q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(r + q) / 2 = (r + q) / 2
reflexivity .
Qed .
Lemma path_avg_split_diff_r (q r : Q) : r - ((r - q) / 2 ) = (r + q) / 2 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
r - (r - q) / 2 = (r + q) / 2
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
r - (r - q) / 2 = (r + q) / 2
pattern r at 1 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(fun q0 : Q => q0 - (r - q) / 2 = (r + q) / 2 ) r
rewrite <- (mult_1_r r).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
r * 1 - (r - q) / 2 = (r + q) / 2
pattern (1 : Q) at 1 .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(fun q0 : Q => r * q0 - (r - q) / 2 = (r + q) / 2 )
(1 : Q)
rewrite <- (dec_recip_inverse 2 ) by solve_propholds.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
r * (2 / 2 ) - (r - q) / 2 = (r + q) / 2
rewrite (associativity r 2 (/2 )).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
r * 2 / 2 - (r - q) / 2 = (r + q) / 2
rewrite negate_mult_distr_l.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
r * 2 / 2 + - (r - q) / 2 = (r + q) / 2
rewrite <- (distribute_r (r*2 ) (-(r-q)) (/2 )).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(r * 2 - (r - q)) / 2 = (r + q) / 2
rewrite (distribute_l r 1 1 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(r * 1 + r * 1 - (r - q)) / 2 = (r + q) / 2
rewrite (mult_1_r r).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(r + r - (r - q)) / 2 = (r + q) / 2
rewrite (commutativity (r+r) (-(r-q))).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(- (r - q) + (r + r)) / 2 = (r + q) / 2
rewrite <- negate_swap_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(q - r + (r + r)) / 2 = (r + q) / 2
rewrite <- (associativity q (-r) (r+r)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(q + (- r + (r + r))) / 2 = (r + q) / 2
rewrite (associativity (-r) r r).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(q + (- r + r + r)) / 2 = (r + q) / 2
rewrite (plus_negate_l r).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(q + (0 + r)) / 2 = (r + q) / 2
rewrite (plus_0_l r).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(q + r) / 2 = (r + q) / 2
rewrite (plus_comm q r).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
(r + q) / 2 = (r + q) / 2
reflexivity .
Qed .
Lemma pos_gt_both : forall a b : Q, forall e , a < ' e -> b < ' e ->
exists d d' , a < ' d /\ b < ' d /\ e = d + d'.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall (a b : Q) (e : Q+),
a < ' e ->
b < ' e ->
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall (a b : Q) (e : Q+),
a < ' e ->
b < ' e ->
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
assert (Haux : forall a b : Q, a <= b -> forall e , a < ' e -> b < ' e ->
exists d d' , a < ' d /\ b < ' d /\ e = d + d').H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q,
a ≤ b ->
forall e : Q+,
a < ' e ->
b < ' e ->
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
{ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q,
a ≤ b ->
forall e : Q+,
a < ' e ->
b < ' e ->
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
intros a b E e E1 E2.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
pose proof (Q_average_between _ _ (Qlt_join _ 0 _ E2 prop_holds)) as [E3 E4].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
exists (mkQpos _ (le_lt_trans _ _ _ (join_ub_r _ _) E3)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
{d' : Q+ &
((a <
' {|
pos := (b ⊔ 0 + ' e)%mc / 2 ;
is_pos :=
le_lt_trans 0 (b ⊔ 0 ) ((b ⊔ 0 + ' e)%mc / 2 )
(join_ub_r b 0 ) E3
|}) *
((b <
' {|
pos := (b ⊔ 0 + ' e)%mc / 2 ;
is_pos :=
le_lt_trans 0 (b ⊔ 0 ) ((b ⊔ 0 + ' e)%mc / 2 )
(join_ub_r b 0 ) E3
|}) *
(e =
({|
pos := (b ⊔ 0 + ' e) / 2 ;
is_pos :=
le_lt_trans 0 (b ⊔ 0 ) ((b ⊔ 0 + ' e) / 2 )
(join_ub_r b 0 ) E3
|} + d')%mc)))%type}
unfold cast at 1 4 ;simpl .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
{d' : Q+ &
((a < (b ⊔ 0 + ' e)%mc / 2 ) *
((b < (b ⊔ 0 + ' e)%mc / 2 ) *
(e =
({|
pos := (b ⊔ 0 + ' e) / 2 ;
is_pos :=
le_lt_trans 0 (b ⊔ 0 ) ((b ⊔ 0 + ' e) / 2 )
(join_ub_r b 0 ) E3
|} + d')%mc)))%type}
exists (Qpos_diff _ _ E4 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
((a < (b ⊔ 0 + ' e)%mc / 2 ) *
((b < (b ⊔ 0 + ' e)%mc / 2 ) *
(e =
({|
pos := (b ⊔ 0 + ' e) / 2 ;
is_pos :=
le_lt_trans 0 (b ⊔ 0 ) ((b ⊔ 0 + ' e) / 2 )
(join_ub_r b 0 ) E3
|} + Qpos_diff ((b ⊔ 0 + ' e) / 2 ) (' e) E4)%mc)))%type
repeat split .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
a < (b ⊔ 0 + ' e) / 2
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
a < (b ⊔ 0 + ' e) / 2
apply le_lt_trans with b;trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
b < (b ⊔ 0 + ' e) / 2
apply le_lt_trans with (join b 0 );trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
b ≤ b ⊔ 0
apply join_ub_l.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
b < (b ⊔ 0 + ' e) / 2
apply le_lt_trans with (join b 0 );trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
b ≤ b ⊔ 0
apply join_ub_l.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
e =
{|
pos := (b ⊔ 0 + ' e) / 2 ;
is_pos :=
le_lt_trans 0 (b ⊔ 0 ) ((b ⊔ 0 + ' e) / 2 )
(join_ub_r b 0 ) E3
|} + Qpos_diff ((b ⊔ 0 + ' e) / 2 ) (' e) E4
apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
' e =
' ({|
pos := (b ⊔ 0 + ' e) / 2 ;
is_pos :=
le_lt_trans 0 (b ⊔ 0 ) ((b ⊔ 0 + ' e) / 2 )
(join_ub_r b 0 ) E3
|} + Qpos_diff ((b ⊔ 0 + ' e) / 2 ) (' e) E4)
unfold cast at 2 ;simpl .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
' e =
' {|
pos := (b ⊔ 0 + ' e) / 2 ;
is_pos :=
le_lt_trans 0 (b ⊔ 0 ) ((b ⊔ 0 + ' e) / 2 )
(join_ub_r b 0 ) E3
|} + ' Qpos_diff ((b ⊔ 0 + ' e) / 2 ) (' e) E4
unfold cast at 2 ;simpl .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
' e =
(b ⊔ 0 + ' e) / 2 +
' Qpos_diff ((b ⊔ 0 + ' e) / 2 ) (' e) E4
unfold cast at 3 ;simpl .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q E : a ≤ b e : Q+ E1 : a < ' e E2 : b < ' e E3 : b ⊔ 0 < (b ⊔ 0 + ' e) / 2 E4 : (b ⊔ 0 + ' e) / 2 < ' e
' e = (b ⊔ 0 + ' e) / 2 + (' e - (b ⊔ 0 + ' e) / 2 )
abstract ring_tac.ring_with_integers (NatPair.Z nat).
} H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q Haux : forall a b : Q,
a ≤ b ->
forall e : Q+,
a < ' e ->
b < ' e ->
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
forall (a b : Q) (e : Q+),
a < ' e ->
b < ' e ->
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
intros a b e E1 E2.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q Haux : forall a b : Q,
a ≤ b ->
forall e : Q+,
a < ' e ->
b < ' e ->
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}a, b : Q e : Q+ E1 : a < ' e E2 : b < ' e
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
destruct (total le a b) as [E|E];auto .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q Haux : forall a b : Q,
a ≤ b ->
forall e : Q+,
a < ' e ->
b < ' e ->
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}a, b : Q e : Q+ E1 : a < ' e E2 : b < ' e E : b ≤ a
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
destruct (Haux _ _ E e) as [d [d' [E3 [E4 E5]]]];trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q Haux : forall a b : Q,
a ≤ b ->
forall e : Q+,
a < ' e ->
b < ' e ->
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}a, b : Q e : Q+ E1 : a < ' e E2 : b < ' e E : b ≤ a d, d' : Q+ E3 : b < ' d E4 : a < ' d E5 : e = d + d'
{d : Q+ &
{d' : Q+ &
((a < ' d) * ((b < ' d) * (e = (d + d')%mc)))%type}}
eauto .
Qed .
Lemma two_fourth_is_one_half @{} : 2 /4 = 1 /2 :> Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
2 / 4 = 1 / 2
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
2 / 4 = 1 / 2
assert (Hrw : 4 = 2 * 2 :> Q) by ring_tac.ring_with_nat.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q Hrw : 4 = 2 * 2
2 / 4 = 1 / 2
apply pos_eq.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q Hrw : 4 = 2 * 2
' (2 / 4 ) = ' (1 / 2 )
repeat (unfold cast;simpl ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q Hrw : 4 = 2 * 2
2 / 4 = 1 / 2
rewrite Hrw;clear Hrw.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
2 / (2 * 2 ) = 1 / 2
rewrite dec_recip_distr.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
2 * (/ 2 / 2 ) = 1 / 2
rewrite mult_assoc.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
2 / 2 / 2 = 1 / 2
rewrite dec_recip_inverse;[|solve_propholds].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
1 / 2 = 1 / 2
reflexivity .
Unshelve .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q X : IsSemiCRing Q
Unit -> Q
exact (fun _ => 1 ). (* <- wtf *)
Qed .
Lemma Q_triangle_le : forall q r : Q, abs (q + r) <= abs q + abs r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, abs (q + r) ≤ abs q + abs r
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, abs (q + r) ≤ abs q + abs r
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
abs (q + r) ≤ abs q + abs r
rewrite (Qabs_is_join (q + r)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
- (q + r) ⊔ (q + r) ≤ abs q + abs r
apply join_le.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
- (q + r) ≤ abs q + abs r
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
- (q + r) ≤ abs q + abs r
rewrite negate_plus_distr.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
- q - r ≤ abs q + abs r
apply plus_le_compat;apply Qabs_le_neg_raw.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
q + r ≤ abs q + abs r
apply plus_le_compat;apply Qabs_le_raw.
Qed .
Lemma Qabs_triangle_alt_aux : forall x y : Q, abs x - abs y <= abs (x - y).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y : Q, abs x - abs y ≤ abs (x - y)
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y : Q, abs x - abs y ≤ abs (x - y)
intros q r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
abs q - abs r ≤ abs (q - r)
apply (order_reflecting (+ (abs r))).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
abs q - abs r + abs r ≤ abs (q - r) + abs r
assert (Hrw : abs q - abs r + abs r = abs q)
by ring_tac.ring_with_integers (NatPair.Z nat);
rewrite Hrw;clear Hrw.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
abs q ≤ abs (q - r) + abs r
etransitivity ;[|apply Q_triangle_le].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
abs q ≤ abs (q - r + r)
assert (Hrw : q - r + r = q)
by ring_tac.ring_with_integers (NatPair.Z nat);
rewrite Hrw;clear Hrw.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
abs q ≤ abs q
reflexivity .
Qed .
Lemma Qabs_triangle_alt : forall x y : Q, abs (abs x - abs y) <= abs (x - y).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y : Q, abs (abs x - abs y) ≤ abs (x - y)
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall x y : Q, abs (abs x - abs y) ≤ abs (x - y)
intros q r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
abs (abs q - abs r) ≤ abs (q - r)
rewrite (Qabs_is_join (abs q - abs r)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
- (abs q - abs r) ⊔ (abs q - abs r) ≤ abs (q - r)
apply join_le.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
- (abs q - abs r) ≤ abs (q - r)
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
- (abs q - abs r) ≤ abs (q - r)
rewrite <-(Qabs_neg (q - r)),<-!negate_swap_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
abs r - abs q ≤ abs (r - q)
apply Qabs_triangle_alt_aux.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q
abs q - abs r ≤ abs (q - r)
apply Qabs_triangle_alt_aux.
Qed .
Lemma Q_dense @{} : forall q r : Q, q < r -> exists s , q < s < r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, q < r -> {s : Q & q < s < r}
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, q < r -> {s : Q & q < s < r}
intros q r E;econstructor ;apply Q_average_between,E.
Qed .
Lemma Qabs_neg_flip @{} : forall a b : Q, abs (a - b) = abs (b - a).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q, abs (a - b) = abs (b - a)
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q, abs (a - b) = abs (b - a)
intros a b.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q
abs (a - b) = abs (b - a)
rewrite <-Qabs_neg.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q
abs (- (a - b)) = abs (b - a)
rewrite <-negate_swap_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q
abs (b - a) = abs (b - a)
trivial .
Qed .
Definition pos_of_Q : Q -> Q+
:= fun q => {| pos := abs q + 1 ;
is_pos := le_lt_trans _ _ _ (Qabs_nonneg q)
(fst (pos_plus_lt_compat_r _ _) lt_0_1) |}.
Lemma Q_abs_plus_1_bounds @{} : forall q : Q,
- ' (pos_of_Q q) ≤ q
≤ ' (pos_of_Q q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, - ' pos_of_Q q ≤ q ≤ ' pos_of_Q q
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q : Q, - ' pos_of_Q q ≤ q ≤ ' pos_of_Q q
intros .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
- ' pos_of_Q q ≤ q ≤ ' pos_of_Q q
change (- (abs q + 1 ) ≤ q ≤ (abs q + 1 )).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
- (abs q + 1 ) ≤ q ≤ abs q + 1
split .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
- (abs q + 1 ) ≤ q
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
- (abs q + 1 ) ≤ q
apply flip_le_negate.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
- q ≤ - - (abs q + 1 )
rewrite involutive.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
- q ≤ abs q + 1
transitivity (abs q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
- q ≤ abs q
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
- q ≤ abs q
apply Qabs_le_neg_raw.
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
abs q ≤ abs q + 1
apply nonneg_plus_le_compat_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
0 ≤ 1
solve_propholds.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
q ≤ abs q + 1
transitivity (abs q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
q ≤ abs q
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
q ≤ abs q
apply Qabs_le_raw.
+ H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
abs q ≤ abs q + 1
apply nonneg_plus_le_compat_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q : Q
0 ≤ 1
solve_propholds.
Qed .
Lemma Qabs_mult @{} : forall a b : Q, abs (a * b) = abs a * abs b.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q, abs (a * b) = abs a * abs b
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a b : Q, abs (a * b) = abs a * abs b
intros a b.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q
abs (a * b) = abs a * abs b
destruct (total_abs_either a) as [Ea|Ea];destruct Ea as [Ea1 Ea2];rewrite Ea2;
destruct (total_abs_either b) as [Eb|Eb];destruct Eb as [Eb1 Eb2];rewrite Eb2.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : 0 ≤ aEa2 : abs a = a Eb1 : 0 ≤ bEb2 : abs b = b
abs (a * b) = a * b
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : 0 ≤ aEa2 : abs a = a Eb1 : 0 ≤ bEb2 : abs b = b
abs (a * b) = a * b
apply ((abs_sig (a*b)).2 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : 0 ≤ aEa2 : abs a = a Eb1 : 0 ≤ bEb2 : abs b = b
0 ≤ a * b
apply nonneg_mult_compat;trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : 0 ≤ aEa2 : abs a = a Eb1 : b ≤ 0 Eb2 : abs b = - b
abs (a * b) = a * - b
rewrite <-negate_mult_distr_r.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : 0 ≤ aEa2 : abs a = a Eb1 : b ≤ 0 Eb2 : abs b = - b
abs (a * b) = - (a * b)
apply ((abs_sig (a*b)).2 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : 0 ≤ aEa2 : abs a = a Eb1 : b ≤ 0 Eb2 : abs b = - b
a * b ≤ 0
apply nonneg_nonpos_mult;trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : a ≤ 0 Ea2 : abs a = - a Eb1 : 0 ≤ bEb2 : abs b = b
abs (a * b) = - a * b
rewrite <-negate_mult_distr_l.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : a ≤ 0 Ea2 : abs a = - a Eb1 : 0 ≤ bEb2 : abs b = b
abs (a * b) = - (a * b)
apply ((abs_sig (a*b)).2 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : a ≤ 0 Ea2 : abs a = - a Eb1 : 0 ≤ bEb2 : abs b = b
a * b ≤ 0
apply nonpos_nonneg_mult;trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : a ≤ 0 Ea2 : abs a = - a Eb1 : b ≤ 0 Eb2 : abs b = - b
abs (a * b) = - a * - b
rewrite negate_mult_negate.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : a ≤ 0 Ea2 : abs a = - a Eb1 : b ≤ 0 Eb2 : abs b = - b
abs (a * b) = a * b
apply ((abs_sig (a*b)).2 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q a, b : Q Ea1 : a ≤ 0 Ea2 : abs a = - a Eb1 : b ≤ 0 Eb2 : abs b = - b
0 ≤ a * b
apply nonpos_mult;trivial .
Qed .
Lemma Qpos_neg_le @{} : forall a : Q+, - ' a <= ' a.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a : Q+, - ' a ≤ ' a
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall a : Q+, - ' a ≤ ' a
intros a;apply between_nonneg;solve_propholds.
Qed .
Definition Qpos_upper (e : Q+) := exists x : Q, ' e <= x.
Definition Qpos_upper_inject e : Q -> Qpos_upper e.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
Q -> Qpos_upper e
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+
Q -> Qpos_upper e
intros x.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+ x : Q
Qpos_upper e
exists (join x (' e)).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q e : Q+ x : Q
' e ≤ x ⊔ ' e
apply join_ub_r.
Defined .
Global Instance QLe_dec : forall q r : Q, Decidable (q <= r).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, Decidable (q ≤ r)
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, Decidable (q ≤ r)
intros q r;destruct (le_or_lt q r).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : q ≤ r
Decidable (q ≤ r)
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : q ≤ r
Decidable (q ≤ r)
left ;trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : r < q
Decidable (q ≤ r)
right ;intros ?.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : r < q X : q ≤ r
Empty
apply (irreflexivity lt q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : r < q X : q ≤ r
q < q
apply le_lt_trans with r;trivial .
Qed .
Global Instance QLt_dec : forall q r : Q, Decidable (q < r).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, Decidable (q < r)
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q
forall q r : Q, Decidable (q < r)
intros q r;destruct (le_or_lt r q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : r ≤ q
Decidable (q < r)
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : r ≤ q
Decidable (q < r)
right ;intros ?.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : r ≤ q X : q < r
Empty
apply (irreflexivity lt q).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : r ≤ q X : q < r
q < q
apply lt_le_trans with r;trivial .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q q, r : Q l : q < r
Decidable (q < r)
left ;trivial .
Qed .
Section enumerable .
Context `{Enumerable Q}.
Definition Qpos_enumerator : nat -> Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q
nat -> Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q
nat -> Q+
intros n.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q n : nat
Q+
destruct (le_or_lt (enumerator Q n) 0 ) as [E|E].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q n : nat E : enumerator Q n ≤ 0
Q+
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q n : nat E : enumerator Q n ≤ 0
Q+
exact 1 .
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q n : nat E : 0 < enumerator Q n
Q+
exists (enumerator Q n );trivial .
Defined .
Lemma Qpos_is_enumerator :
IsSurjection@{UQ} Qpos_enumerator.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q
ReflectiveSubuniverse.IsConnMap (Tr (-1 ))
Qpos_enumerator
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q
ReflectiveSubuniverse.IsConnMap (Tr (-1 ))
Qpos_enumerator
apply BuildIsSurjection.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q
forall b : Q+, merely (hfiber Qpos_enumerator b)
unfold hfiber.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q
forall b : Q+,
merely {x : nat & Qpos_enumerator x = b}
intros e;generalize (@center _ (enumerator_issurj Q (' e))).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+
Tr (-1 ) (hfiber (enumerator Q) (' e)) ->
merely {x : nat & Qpos_enumerator x = e}
apply (Trunc_ind _).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+
hfiber (enumerator Q) (' e) ->
merely {x : nat & Qpos_enumerator x = e}
intros [n E].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+ n : nat E : enumerator Q n = ' e
merely {x : nat & Qpos_enumerator x = e}
apply tr;exists n .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+ n : nat E : enumerator Q n = ' e
Qpos_enumerator n = e
unfold Qpos_enumerator.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+ n : nat E : enumerator Q n = ' e
match le_or_lt (enumerator Q n) 0 with
| inl _ => 1
| inr l => {| pos := enumerator Q n; is_pos := l |}
end = e
destruct (le_or_lt (enumerator Q n) 0 ) as [E1|E1].H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+ n : nat E : enumerator Q n = ' e E1 : enumerator Q n ≤ 0
1 = e
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+ n : nat E : enumerator Q n = ' e E1 : enumerator Q n ≤ 0
1 = e
destruct (irreflexivity lt 0 ).H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+ n : nat E : enumerator Q n = ' e E1 : enumerator Q n ≤ 0
0 < 0
apply lt_le_trans with (enumerator Q n);trivial .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+ n : nat E : enumerator Q n = ' e E1 : enumerator Q n ≤ 0
0 < enumerator Q n
rewrite E;solve_propholds.
- H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q e : Q+ n : nat E : enumerator Q n = ' e E1 : 0 < enumerator Q n
{| pos := enumerator Q n; is_pos := E1 |} = e
apply pos_eq,E.
Qed .
Global Instance Qpos_enumerable : Enumerable Q+.H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q
Enumerable Q+
Proof .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q
Enumerable Q+
exists Qpos_enumerator .H : Funext H0 : Univalence Q : Type Qap : Apart Q Qplus : Plus Q Qmult : Mult Q Qzero : Zero Q Qone : One Q Qneg : Negate Q Qrecip : DecRecip Q Qle : Le Q Qlt : Lt Q QtoField : RationalsToField Q Qrats : Rationals Q Qtrivialapart : TrivialApart Q Qdec : DecidablePaths Q Qmeet : Meet Q Qjoin : Join Q Qlattice : LatticeOrder Qle Qle_total : TotalRelation le Qabs : Abs Q H1 : Enumerable Q
ReflectiveSubuniverse.IsConnMap (Tr (-1 ))
Qpos_enumerator
first [exact Qpos_is_enumerator@{Uhuge Ularge}|
exact Qpos_is_enumerator@{}].
Qed .
End enumerable .
End contents .
Arguments Qpos Q {_ _}.