@@ -635,12 +635,40 @@ variables {α : Sort*} {β : Sort*} {p q : α → Prop} {b : Prop}
635
635
lemma forall_imp (h : ∀ a, p a → q a) : (∀ a, p a) → ∀ a, q a :=
636
636
λ h' a, h a (h' a)
637
637
638
+ lemma forall₂_congr {p q : α → β → Prop } (h : ∀ a b, p a b ↔ q a b) :
639
+ (∀ a b, p a b) ↔ (∀ a b, q a b) :=
640
+ forall_congr (λ a, forall_congr (h a))
641
+
642
+ lemma forall₃_congr {γ : Sort *} {p q : α → β → γ → Prop }
643
+ (h : ∀ a b c, p a b c ↔ q a b c) :
644
+ (∀ a b c, p a b c) ↔ (∀ a b c, q a b c) :=
645
+ forall_congr (λ a, forall₂_congr (h a))
646
+
647
+ lemma forall₄_congr {γ δ : Sort *} {p q : α → β → γ → δ → Prop }
648
+ (h : ∀ a b c d, p a b c d ↔ q a b c d) :
649
+ (∀ a b c d, p a b c d) ↔ (∀ a b c d, q a b c d) :=
650
+ forall_congr (λ a, forall₃_congr (h a))
651
+
638
652
lemma Exists.imp (h : ∀ a, (p a → q a)) (p : ∃ a, p a) : ∃ a, q a := exists_imp_exists h p
639
653
640
654
lemma exists_imp_exists' {p : α → Prop } {q : β → Prop } (f : α → β) (hpq : ∀ a, p a → q (f a))
641
655
(hp : ∃ a, p a) : ∃ b, q b :=
642
656
exists.elim hp (λ a hp', ⟨_, hpq _ hp'⟩)
643
657
658
+ lemma exists₂_congr {p q : α → β → Prop } (h : ∀ a b, p a b ↔ q a b) :
659
+ (∃ a b, p a b) ↔ (∃ a b, q a b) :=
660
+ exists_congr (λ a, exists_congr (h a))
661
+
662
+ lemma exists₃_congr {γ : Sort *} {p q : α → β → γ → Prop }
663
+ (h : ∀ a b c, p a b c ↔ q a b c) :
664
+ (∃ a b c, p a b c) ↔ (∃ a b c, q a b c) :=
665
+ exists_congr (λ a, exists₂_congr (h a))
666
+
667
+ lemma exists₄_congr {γ δ : Sort *} {p q : α → β → γ → δ → Prop }
668
+ (h : ∀ a b c d, p a b c d ↔ q a b c d) :
669
+ (∃ a b c d, p a b c d) ↔ (∃ a b c d, q a b c d) :=
670
+ exists_congr (λ a, exists₃_congr (h a))
671
+
644
672
theorem forall_swap {p : α → β → Prop } : (∀ x y, p x y) ↔ ∀ y x, p x y :=
645
673
⟨function.swap, function.swap⟩
646
674
0 commit comments