feat(library/data/finset/{bigops,comb}): add two theorems for Haitao
This commit is contained in:
parent
70407473c2
commit
e8ad284ead
2 changed files with 25 additions and 0 deletions
|
@ -117,6 +117,19 @@ section deceqA
|
||||||
finset.induction_on s
|
finset.induction_on s
|
||||||
(by rewrite Union_empty)
|
(by rewrite Union_empty)
|
||||||
(take s1 a Pa IH, by rewrite [image_insert, *Union_insert, IH])
|
(take s1 a Pa IH, by rewrite [image_insert, *Union_insert, IH])
|
||||||
|
|
||||||
|
lemma Union_const [deceqB : decidable_eq B] {f : A → finset B} {s : finset A} {t : finset B}
|
||||||
|
(a : A) : s ≠ ∅ → (∀ x, x ∈ s → f x = t) → Union s f = t :=
|
||||||
|
begin
|
||||||
|
induction s with a' s' H IH,
|
||||||
|
{intros [H1, H2], exfalso, apply H1 !rfl},
|
||||||
|
intros [H1, H2],
|
||||||
|
rewrite [Union_insert, H2 _ !mem_insert],
|
||||||
|
cases (decidable.em (s' = ∅)) with [seq, sne],
|
||||||
|
{rewrite [seq, Union_empty, union_empty] },
|
||||||
|
have H3 : ∀ x, x ∈ s' → f x = t, from (λ x H', H2 x (mem_insert_of_mem _ H')),
|
||||||
|
rewrite [IH sne H3, union_self]
|
||||||
|
end
|
||||||
end deceqA
|
end deceqA
|
||||||
|
|
||||||
end union
|
end union
|
||||||
|
|
|
@ -74,6 +74,18 @@ ext (take y, iff.intro
|
||||||
show y ∈ image f (insert a s), from eq.subst (eq.symm H2) H3)
|
show y ∈ image f (insert a s), from eq.subst (eq.symm H2) H3)
|
||||||
(assume H2 : y ∈ image f s,
|
(assume H2 : y ∈ image f s,
|
||||||
show y ∈ image f (insert a s), from mem_image_of_mem_image_of_subset H2 !subset_insert)))
|
show y ∈ image f (insert a s), from mem_image_of_mem_image_of_subset H2 !subset_insert)))
|
||||||
|
|
||||||
|
lemma image_compose {C : Type} [deceqC : decidable_eq C] {f : B → C} {g : A → B} {s : finset A} :
|
||||||
|
image (f∘g) s = image f (image g s) :=
|
||||||
|
ext (take z, iff.intro
|
||||||
|
(assume Hz : z ∈ image (f∘g) s,
|
||||||
|
obtain x (Hx : x ∈ s) (Hgfx : f (g x) = z), from exists_of_mem_image Hz,
|
||||||
|
by rewrite -Hgfx; apply mem_image_of_mem _ (mem_image_of_mem _ Hx))
|
||||||
|
(assume Hz : z ∈ image f (image g s),
|
||||||
|
obtain y (Hy : y ∈ image g s) (Hfy : f y = z), from exists_of_mem_image Hz,
|
||||||
|
obtain x (Hx : x ∈ s) (Hgx : g x = y), from exists_of_mem_image Hy,
|
||||||
|
mem_image_of_mem_of_eq Hx (by esimp; rewrite [Hgx, Hfy])))
|
||||||
|
|
||||||
end image
|
end image
|
||||||
|
|
||||||
/- filter and set-builder notation -/
|
/- filter and set-builder notation -/
|
||||||
|
|
Loading…
Reference in a new issue