Guest User

Untitled

a guest
Feb 16th, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. Require Import Bool.
  2. Require Import Setoid.
  3. Require Import Coq.Logic.Eqdep_dec.
  4. Require Import ZArith Znumtheory.
  5. Require Import Ring.
  6. Require Import Field.
  7. Require Import Specif.
  8. Require Import ProofIrrelevance.
  9. Require Import Coq.PArith.Pnat.
  10. Require Import Coq.ZArith.Znat.
  11. Require Import ArithRing.
  12. Require Import Psatz.
  13. Require Import Recdef.
  14. Require Import Div2.
  15. Require Import Coq.Arith.Wf_nat.
  16. Require Import Coq.ZArith.Znat.
  17.  
  18. Lemma mod_irr : forall a : Z,
  19. 0 <= a ->
  20. Z.to_nat (a mod Q) = Nat.modulo (Z.to_nat a) (Z.to_nat Q).
  21. Proof.
  22. intros a Ha.
  23. assert (Ht : exists (k r : Z), k >= 0 /\ 0 <= r < Q /\ a = r + k * Q).
  24. assert (Q <> 0). unfold Q. lia.
  25. pose proof (Z.div_mod a Q H).
  26. exists (a / Q), (a mod Q).
  27. split. unfold Q.
  28. apply Z_div_ge0. lia. lia.
  29. split. apply Z.mod_pos_bound. unfold Q. lia.
  30. lia.
  31. destruct Ht as [k [r [Ht1 [Ht2 Ht3]]]].
  32. rewrite Ht3.
  33. rewrite Z_mod_plus_full.
  34. rewrite Z.mod_small; swap 1 2.
  35. assumption.
  36. rewrite Z2Nat.inj_add.
  37. rewrite Z2Nat.inj_mul.
  38. rewrite Nat.mod_add.
  39. rewrite Nat.mod_small. auto.
  40. apply Z2Nat.inj_lt; try lia.
  41. subst. cbn. lia.
  42. lia. lia. lia. unfold Q. lia.
  43. Qed.
  44.  
  45.  
  46.  
  47. I see a very similar lemma for nat
  48.  
  49. mod_Zmod
  50. : forall n m : nat, m <> 0%nat -> Z.of_nat (n mod m) = Z.of_nat n mod Z.of_nat m
  51.  
  52. and I am looking for very similar thing in Z.
Add Comment
Please, Sign In to add comment