Union lift #
This file defines Set.iUnionLift
to glue together functions defined on each of a collection of
sets to make a function on the Union of those sets.
Main definitions #
Set.iUnionLift
- Given a Union of setsiUnion S
, define a function on any subset of the Union by defining it on each component, and proving that it agrees on the intersections.Set.liftCover
- Version ofSet.iUnionLift
for the special case that the sets cover the entire type.
Main statements #
There are proofs of the obvious properties of iUnionLift
, i.e. what it does to elements of
each of the sets in the iUnion
, stated in different ways.
There are also three lemmas about iUnionLift
intended to aid with proving that iUnionLift
is a
homomorphism when defined on a Union of substructures. There is one lemma each to show that
constants, unary functions, or binary functions are preserved. These lemmas are:
*Set.iUnionLift_const
*Set.iUnionLift_unary
*Set.iUnionLift_binary
Tags #
directed union, directed supremum, glue, gluing
Given a union of sets iUnion S
, define a function on the Union by defining
it on each component, and proving that it agrees on the intersections.
Equations
- Set.iUnionLift S f x✝ T hT x = let i := Classical.indefiniteDescription (fun (x_1 : ι) => ↑x ∈ S x_1) ⋯; f ↑i { val := ↑x, property := ⋯ }
Instances For
iUnionLift_const
is useful for proving that iUnionLift
is a homomorphism
of algebraic structures when defined on the Union of algebraic subobjects.
For example, it could be used to prove that the lift of a collection
of group homomorphisms on a union of subgroups preserves 1
.
iUnionLift_unary
is useful for proving that iUnionLift
is a homomorphism
of algebraic structures when defined on the Union of algebraic subobjects.
For example, it could be used to prove that the lift of a collection
of linear_maps on a union of submodules preserves scalar multiplication.
iUnionLift_binary
is useful for proving that iUnionLift
is a homomorphism
of algebraic structures when defined on the Union of algebraic subobjects.
For example, it could be used to prove that the lift of a collection
of group homomorphisms on a union of subgroups preserves *
.
Glue together functions defined on each of a collection S
of sets that cover a type. See
also Set.iUnionLift
.
Equations
- Set.liftCover S f hf hS a = Set.iUnionLift S f hf Set.univ ⋯ { val := a, property := trivial }