Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit ba2eb70

Browse files
committed
feat(algebra/order/to_interval_mod): notation for add_comm_group.modeq (#18955)
Split from #18941
1 parent 7581030 commit ba2eb70

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

src/algebra/order/to_interval_mod.lean

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@ interval.
2727
* `to_Ioc_div hp a b` (where `hp : 0 < p`): The unique integer such that this multiple of `p`,
2828
subtracted from `b`, is in `Ioc a (a + p)`.
2929
* `to_Ioc_mod hp a b` (where `hp : 0 < p`): Reduce `b` to the interval `Ioc a (a + p)`.
30-
* `add_comm_group.modeq p a b`: `a` and `b` are congruent modulo a multiple of `p`. See also
31-
`smodeq` which is a more general version in arbitrary submodules.
30+
* `a ≡ b [PMOD p]`: `a` and `b` are congruent modulo a multiple of `p`. See also `smodeq` which is a
31+
more general version in arbitrary submodules. This is notation for `add_comm_group.modeq p a b`.
3232
3333
## TODO
3434
@@ -462,8 +462,10 @@ with `to_Ioc_mod hp a` at `b`, or `to_Ico_div hp a` disagrees with `to_Ioc_div h
462462
def modeq (p a b : α) : Prop := ∀ z : ℤ, b - z • p ∉ set.Ioo a (a + p)
463463
include
464464

465+
notation a ` ≡ `:50 b ` [PMOD `:50 p `]`:0 := modeq p a b
466+
465467
lemma tfae_modeq :
466-
tfae [modeq p a b,
468+
tfae [a ≡ b [PMOD p],
467469
to_Ico_mod hp a b ≠ to_Ioc_mod hp a b,
468470
to_Ico_mod hp a b + p = to_Ioc_mod hp a b,
469471
to_Ico_mod hp a b = a] :=
@@ -492,17 +494,17 @@ end
492494
variables {a b}
493495

494496
lemma modeq_iff_to_Ico_mod_ne_to_Ioc_mod :
495-
modeq p a b ↔ to_Ico_mod hp a b ≠ to_Ioc_mod hp a b := (tfae_modeq hp a b).out 0 1
497+
a ≡ b [PMOD p] ↔ to_Ico_mod hp a b ≠ to_Ioc_mod hp a b := (tfae_modeq hp a b).out 0 1
496498
lemma modeq_iff_to_Ico_mod_add_period_eq_to_Ioc_mod :
497-
modeq p a b ↔ to_Ico_mod hp a b + p = to_Ioc_mod hp a b := (tfae_modeq hp a b).out 0 2
499+
a ≡ b [PMOD p] ↔ to_Ico_mod hp a b + p = to_Ioc_mod hp a b := (tfae_modeq hp a b).out 0 2
498500
lemma modeq_iff_to_Ico_mod_eq_left :
499-
modeq p a b ↔ to_Ico_mod hp a b = a := (tfae_modeq hp a b).out 0 3
501+
a ≡ b [PMOD p] ↔ to_Ico_mod hp a b = a := (tfae_modeq hp a b).out 0 3
500502

501503
lemma not_modeq_iff_to_Ico_mod_eq_to_Ioc_mod :
502-
¬modeq p a b ↔ to_Ico_mod hp a b = to_Ioc_mod hp a b :=
504+
¬a ≡ b [PMOD p] ↔ to_Ico_mod hp a b = to_Ioc_mod hp a b :=
503505
(modeq_iff_to_Ico_mod_ne_to_Ioc_mod _).not_left
504506

505-
lemma modeq_iff_to_Ioc_mod_eq_right : modeq p a b ↔ to_Ioc_mod hp a b = a + p :=
507+
lemma modeq_iff_to_Ioc_mod_eq_right : a ≡ b [PMOD p] ↔ to_Ioc_mod hp a b = a + p :=
506508
begin
507509
rw [modeq_iff_to_Ico_mod_ne_to_Ioc_mod hp, ne, to_Ico_mod_eq_iff hp, not_iff_comm],
508510
obtain ⟨h₁, h₂⟩ := to_Ioc_mod_mem_Ioc hp a b,
@@ -511,19 +513,19 @@ begin
511513
end
512514

513515
lemma not_modeq_iff_to_Ico_div_eq_to_Ioc_div :
514-
¬modeq p a b ↔ to_Ico_div hp a b = to_Ioc_div hp a b :=
516+
¬a ≡ b [PMOD p] ↔ to_Ico_div hp a b = to_Ioc_div hp a b :=
515517
by rw [not_modeq_iff_to_Ico_mod_eq_to_Ioc_mod hp,
516518
to_Ico_mod, to_Ioc_mod, sub_right_inj, (zsmul_strict_mono_left hp).injective.eq_iff]
517519

518520
lemma modeq_iff_to_Ico_div_eq_to_Ioc_div_add_one :
519-
modeq p a b ↔ to_Ico_div hp a b = to_Ioc_div hp a b + 1 :=
521+
a ≡ b [PMOD p] ↔ to_Ico_div hp a b = to_Ioc_div hp a b + 1 :=
520522
by rw [modeq_iff_to_Ico_mod_add_period_eq_to_Ioc_mod hp, to_Ico_mod, to_Ioc_mod,
521523
← eq_sub_iff_add_eq, sub_sub, sub_right_inj, ← add_one_zsmul,
522524
(zsmul_strict_mono_left hp).injective.eq_iff]
523525

524526
include hp
525527

526-
lemma modeq_iff_eq_add_zsmul : modeq p a b ↔ ∃ z : ℤ, b = a + z • p :=
528+
lemma modeq_iff_eq_add_zsmul : a ≡ b [PMOD p] ↔ ∃ z : ℤ, b = a + z • p :=
527529
begin
528530
rw [modeq_iff_to_Ico_mod_eq_left hp],
529531
split; intro h,
@@ -533,16 +535,16 @@ begin
533535
exact ⟨lt_add_of_pos_right a hp, h⟩, },
534536
end
535537

536-
lemma not_modeq_iff_ne_add_zsmul : ¬modeq p a b ↔ ∀ z : ℤ, b ≠ a + z • p :=
538+
lemma not_modeq_iff_ne_add_zsmul : ¬a ≡ b [PMOD p] ↔ ∀ z : ℤ, b ≠ a + z • p :=
537539
by rw [modeq_iff_eq_add_zsmul hp, not_exists]
538540

539541
lemma modeq_iff_eq_mod_zmultiples :
540-
modeq p a b ↔ (b : α ⧸ add_subgroup.zmultiples p) = a :=
542+
a ≡ b [PMOD p] ↔ (b : α ⧸ add_subgroup.zmultiples p) = a :=
541543
by simp_rw [modeq_iff_eq_add_zsmul hp, quotient_add_group.eq_iff_sub_mem,
542544
add_subgroup.mem_zmultiples_iff, eq_sub_iff_add_eq', eq_comm]
543545

544546
lemma not_modeq_iff_ne_mod_zmultiples :
545-
¬modeq p a b ↔ (b : α ⧸ add_subgroup.zmultiples p) ≠ a :=
547+
¬a ≡ b [PMOD p] ↔ (b : α ⧸ add_subgroup.zmultiples p) ≠ a :=
546548
(modeq_iff_eq_mod_zmultiples hp).not
547549

548550
end add_comm_group

0 commit comments

Comments
 (0)