feat(library/data/set/basic,function): mark set reducible, and add theorem from Haitao Zhang
This commit is contained in:
parent
11f74363e2
commit
f7a610faa3
2 changed files with 18 additions and 2 deletions
|
@ -8,7 +8,7 @@ Author: Jeremy Avigad, Leonardo de Moura
|
||||||
import logic
|
import logic
|
||||||
open eq.ops
|
open eq.ops
|
||||||
|
|
||||||
definition set (T : Type) := T → Prop
|
definition set [reducible] (T : Type) := T → Prop
|
||||||
|
|
||||||
namespace set
|
namespace set
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ Copyright (c) 2014 Jeremy Avigad. All rights reserved.
|
||||||
Released under Apache 2.0 license as described in the file LICENSE.
|
Released under Apache 2.0 license as described in the file LICENSE.
|
||||||
|
|
||||||
Module: data.set.function
|
Module: data.set.function
|
||||||
Author: Jeremy Avigad, Andrew Zipperer
|
Author: Jeremy Avigad, Andrew Zipperer, Haitao Zhang
|
||||||
|
|
||||||
Functions between subsets of finite types.
|
Functions between subsets of finite types.
|
||||||
-/
|
-/
|
||||||
|
@ -37,6 +37,22 @@ setext (take y, iff.intro
|
||||||
have H5 : f1 x = y, from (H1 H4) ⬝ and.right H3,
|
have H5 : f1 x = y, from (H1 H4) ⬝ and.right H3,
|
||||||
exists.intro x (and.intro H4 H5)))
|
exists.intro x (and.intro H4 H5)))
|
||||||
|
|
||||||
|
theorem in_image {f : X → Y} {a : set X} {x : X} {y : Y}
|
||||||
|
(H1 : x ∈ a) (H2 : f x = y) : y ∈ f '[a] :=
|
||||||
|
exists.intro x (and.intro H1 H2)
|
||||||
|
|
||||||
|
lemma image_compose (f : Y → X) (g : X → Y) (a : set X) : (f ∘ g) '[a] = f '[g '[a]] :=
|
||||||
|
setext (take z,
|
||||||
|
iff.intro
|
||||||
|
(assume Hz : z ∈ (f ∘ g) '[a],
|
||||||
|
obtain x (Hx : x ∈ a ∧ f (g x) = z), from Hz,
|
||||||
|
have Hgx : g x ∈ g '[a], from in_image (and.left Hx) rfl,
|
||||||
|
show z ∈ f '[g '[a]], from in_image Hgx (and.right Hx))
|
||||||
|
(assume Hz : z ∈ f '[g '[a]],
|
||||||
|
obtain y (Hy : y ∈ g '[a] ∧ f y = z), from Hz,
|
||||||
|
obtain x (Hz : x ∈ a ∧ g x = y), from and.left Hy,
|
||||||
|
show z ∈ (f ∘ g) '[a], from in_image (and.left Hz) ((and.right Hz)⁻¹ ▸ (and.right Hy))))
|
||||||
|
|
||||||
/- maps to -/
|
/- maps to -/
|
||||||
|
|
||||||
definition maps_to [reducible] (f : X → Y) (a : set X) (b : set Y) : Prop := ∀⦃x⦄, x ∈ a → f x ∈ b
|
definition maps_to [reducible] (f : X → Y) (a : set X) (b : set Y) : Prop := ∀⦃x⦄, x ∈ a → f x ∈ b
|
||||||
|
|
Loading…
Reference in a new issue