From stdpp Require Import prelude fin_maps. From VLSM.Lib Require Import Preamble.
For some reason, this instance is not exported by stdpp.
#[export] Existing Instance elem_of_dec_slow. Section sec_fin_set. Context `{FinSet A C}. Section sec_general.
If
X
is a subset of Y
, then the elements of X
are a sublist
of the elements of Y
.
A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CX ⊆ Y → elements X ⊆ elements Yby set_solver. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CX ⊆ Y → elements X ⊆ elements YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∪ Y) ≥ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∪ Y) ≥ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CX ⊆ X ∪ Yby set_solver. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CX ∪ (X ∪ Y) ≡ X ∪ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∪ Y) ≥ size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∪ Y) ≥ size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CY ⊆ X ∪ Yby set_solver. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CY ∪ (X ∪ Y) ≡ X ∪ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C2 * size (X ∪ Y) ≥ size X + size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C2 * size (X ∪ Y) ≥ size X + size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hx: size (X ∪ Y) ≥ size X2 * size (X ∪ Y) ≥ size X + size Yby lia. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hx: size (X ∪ Y) ≥ size X
Hy: size (X ∪ Y) ≥ size Y2 * size (X ∪ Y) ≥ size X + size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∖ Y) ≤ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∖ Y) ≤ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CX ∖ Y ⊆ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C∀ x : A, x ∈ X ∖ Y → x ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
x: A
Hx: x ∈ X ∖ Yx ∈ Xby itauto. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
x: A
Hx: x ∈ X ∧ x ∉ Yx ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∪ Y) ≤ size X + size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∪ Y) ≤ size X + size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Halt: size (X ∪ Y) = size X + size (Y ∖ X)size (X ∪ Y) ≤ size X + size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Halt: size (X ∪ Y) = size X + size (Y ∖ X)size X + size (Y ∖ X) ≤ size X + size Yby lia. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Halt: size (X ∪ Y) = size X + size (Y ∖ X)size (Y ∖ X) ≤ size Y → size X + size (Y ∖ X) ≤ size X + size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∩ Y) ≤ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∩ Y) ≤ size Xby set_solver. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CX ∩ Y ⊆ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∩ Y) ≤ size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∩ Y) ≤ size Yby set_solver. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CX ∩ Y ⊆ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ XZ.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size Y))%ZA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ XZ.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size Y))%ZA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ XY ∪ X ∖ Y ≡ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ XZ.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size Y))%ZA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ XY ∪ X ∖ Y ≡ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ XY ∪ X ∖ Y ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
a: Aa ∈ Y ∪ X ∖ Y ↔ a ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
a: A
Ha: a ∈ Y ∪ X ∖ Ya ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
a: A
Ha: a ∈ Xa ∈ Y ∪ X ∖ Yby set_solver.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
a: A
Ha: a ∈ Y ∪ X ∖ Ya ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
a: A
Ha: a ∈ Xa ∈ Y ∪ X ∖ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
a: A
Ha: a ∈ X
e: a ∈ Ya ∈ Y ∪ X ∖ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
a: A
Ha: a ∈ X
n: a ∉ Ya ∈ Y ∪ X ∖ Yby apply elem_of_union; left; itauto.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
a: A
Ha: a ∈ X
e: a ∈ Ya ∈ Y ∪ X ∖ Yby apply elem_of_union; right; set_solver.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
a: A
Ha: a ∈ X
n: a ∉ Ya ∈ Y ∪ X ∖ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ XZ.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size Y))%ZA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ Xsize Y + size (X ∖ Y) = size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Htemp2: size Y + size (X ∖ Y) = size XZ.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size Y))%ZA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ Xsize Y + size (X ∖ Y) = size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Hun: Y ## X ∖ Y → size (Y ∪ X ∖ Y) = size Y + size (X ∖ Y)size Y + size (X ∖ Y) = size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Hun: Y ## X ∖ Y → size (Y ∪ X ∖ Y) = size Y + size (X ∖ Y)Y ## X ∖ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Hun: size (Y ∪ X ∖ Y) = size Y + size (X ∖ Y)size Y + size (X ∖ Y) = size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Hun: Y ## X ∖ Y → size (Y ∪ X ∖ Y) = size Y + size (X ∖ Y)Y ## X ∖ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Hun: Y ## X ∖ Y → size (Y ∪ X ∖ Y) = size Y + size (X ∖ Y)∀ x : A, x ∈ Y → x ∈ X ∖ Y → FalseA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Hun: Y ## X ∖ Y → size (Y ∪ X ∖ Y) = size Y + size (X ∖ Y)
a: A
Ha: a ∈ Y
Ha2: a ∈ X ∖ YFalseby itauto.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Hun: Y ## X ∖ Y → size (Y ∪ X ∖ Y) = size Y + size (X ∖ Y)
a: A
Ha: a ∈ Y
Ha2: a ∈ X ∧ a ∉ YFalseA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Hun: size (Y ∪ X ∖ Y) = size Y + size (X ∖ Y)size Y + size (X ∖ Y) = size Xby itauto.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Hun: size X = size Y + size (X ∖ Y)size Y + size (X ∖ Y) = size Xby lia. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hsub: Y ⊆ X
Htemp: Y ∪ X ∖ Y ≡ X
Htemp2: size Y + size (X ∖ Y) = size XZ.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size Y))%ZA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CX ∖ Y ≡ X ∖ (X ∩ Y)by set_solver. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CX ∖ Y ≡ X ∖ (X ∩ Y)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CZ.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size (X ∩ Y)))%ZA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CZ.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size (X ∩ Y)))%ZA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CZ.of_nat (size (X ∖ (X ∩ Y))) = (Z.of_nat (size X) - Z.of_nat (size (X ∩ Y)))%Zby set_solver. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: C
Hdif: X ∩ Y ⊆ X → Z.of_nat (size (X ∖ (X ∩ Y))) = (Z.of_nat (size X) - Z.of_nat (size (X ∩ Y)))%ZZ.of_nat (size (X ∖ (X ∩ Y))) = (Z.of_nat (size X) - Z.of_nat (size (X ∩ Y)))%ZA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∖ Y) ≥ size X - size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∖ Y) ≥ size X - size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CZ.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size (X ∩ Y)))%Z → size (X ∖ Y) ≥ size X - size Yby lia. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Csize (X ∩ Y) ≤ size Y → Z.of_nat (size (X ∖ Y)) = (Z.of_nat (size X) - Z.of_nat (size (X ∩ Y)))%Z → size (X ∖ Y) ≥ size X - size YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
l: list Asize (list_to_set l) ≤ length lA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
l: list Asize (list_to_set l) ≤ length lA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A Csize ∅ ≤ 0A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
a: A
l: list A
IHl: size (list_to_set l) ≤ length lsize ({[a]} ∪ list_to_set l) ≤ S (length l)by rewrite size_empty; lia.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A Csize ∅ ≤ 0A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
a: A
l: list A
IHl: size (list_to_set l) ≤ length lsize ({[a]} ∪ list_to_set l) ≤ S (length l)by rewrite size_singleton in Hun_size; lia. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
a: A
l: list A
IHl: size (list_to_set l) ≤ length l
Hun_size: size ({[a]} ∪ list_to_set l) ≤ size {[a]} + size (list_to_set l)size ({[a]} ∪ list_to_set l) ≤ S (length l)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A CRelDecision subseteqA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A CRelDecision subseteqA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CDecision (X ⊆ Y)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Cset_Forall (λ a : A, a ∈ Y) X ↔ X ⊆ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CDecision (set_Forall (λ a : A, a ∈ Y) X)by set_solver.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: Cset_Forall (λ a : A, a ∈ Y) X ↔ X ⊆ Yby typeclasses eauto. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X, Y: CDecision (set_Forall (λ a : A, a ∈ Y) X)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C∀ X : C, Decision (X ≡ ∅)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C∀ X : C, Decision (X ≡ ∅)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: CDecision (X ≡ ∅)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
e: elements X = []Decision (X ≡ ∅)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
n: elements X ≠ []Decision (X ≡ ∅)by left; rewrite <- elements_empty_iff.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
e: elements X = []Decision (X ≡ ∅)by right; rewrite <- elements_empty_iff. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
n: elements X ≠ []Decision (X ≡ ∅)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C∀ (X : C) (x : A), Decision (X ≡ {[x]})A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C∀ (X : C) (x : A), Decision (X ≡ {[x]})A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
x: ADecision (X ≡ {[x]})A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
x: A
Heq: elements X = [x]Decision (X ≡ {[x]})A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
x: A
Heq: elements X ≠ [x]Decision (X ≡ {[x]})A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
x: A
Heq: elements X = [x]Decision (X ≡ {[x]})A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
x: A
Heq: elements X = [x]
i: Ai ∈ X ↔ i ∈ {[x]}by rewrite Heq, elem_of_list_singleton.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
x: A
Heq: elements X = [x]
i: Ai ∈ elements X ↔ i = xA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
x: A
Heq: elements X ≠ [x]Decision (X ≡ {[x]})A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
x: A
Heq: X ≡ {[x]}elements X = [x]by rewrite Heq, elements_singleton. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
X: C
x: A
Heq: X ≡ {[x]}elements X ≡ₚ [x]A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A CRelDecision equivA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A CRelDecision equivA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A C
X, Y: CDecision (X ≡ Y)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A C
X, Y: C
p: elements X ≡ₚ elements YDecision (X ≡ Y)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A C
X, Y: C
p: elements X ≡ₚ elements Y
a: Aa ∈ X ↔ a ∈ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A C
X, Y: C
p: elements X ≡ₚ elements Y
a: A(∃ i : nat, elements X !! i = Some a) ↔ (∃ i : nat, elements Y !! i = Some a)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A C
X, Y: C
Hlen: length (elements X) = length (elements Y)
f: nat → nat
Hinjf: Inj eq eq f
Hp: ∀ i : nat, elements X !! i = elements Y !! f i
a: A
i: nat
Hi: elements X !! i = Some a∃ i : nat, elements Y !! i = Some aA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A C
X, Y: C
Hlen: length (elements Y) = length (elements X)
f: nat → nat
Hinjf: Inj eq eq f
Hp: ∀ i : nat, elements Y !! i = elements X !! f i
a: A
i: nat
Hi: elements Y !! i = Some a∃ i : nat, elements X !! i = Some aby rewrite Hp in Hi; eexists.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A C
X, Y: C
Hlen: length (elements X) = length (elements Y)
f: nat → nat
Hinjf: Inj eq eq f
Hp: ∀ i : nat, elements X !! i = elements Y !! f i
a: A
i: nat
Hi: elements X !! i = Some a∃ i : nat, elements Y !! i = Some aby rewrite Hp in Hi; eexists. Qed. End sec_general. Section sec_filter. Context (P P2 : A -> Prop) `{!forall x, Decision (P x)} `{!forall x, Decision (P2 x)} (X Y : C).A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
H7: ElemOf A C
H8: Empty C
H9: Singleton A C
H10: Union C
H11: Intersection C
H12: Difference C
H13: Elements A C
EqDecision1: EqDecision A
H14: FinSet A C
X, Y: C
Hlen: length (elements Y) = length (elements X)
f: nat → nat
Hinjf: Inj eq eq f
Hp: ∀ i : nat, elements Y !! i = elements X !! f i
a: A
i: nat
Hi: elements Y !! i = Some a∃ i : nat, elements X !! i = Some aA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: X ⊆ Yfilter P X ⊆ filter P YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: X ⊆ Yfilter P X ⊆ filter P YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: X ⊆ Y
a: A
HaX: a ∈ filter P Xa ∈ filter P YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: X ⊆ Y
a: A
HaX: P a ∧ a ∈ Xa ∈ filter P Yby set_solver. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: X ⊆ Y
a: A
HaX: P a ∧ a ∈ XP a ∧ a ∈ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: ∀ a : A, P a → P2 afilter P X ⊆ filter P2 XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: ∀ a : A, P a → P2 afilter P X ⊆ filter P2 XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: ∀ a : A, P a → P2 a
a: A
HaP: a ∈ filter P Xa ∈ filter P2 XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: ∀ a : A, P a → P2 a
a: A
HaP: P a ∧ a ∈ Xa ∈ filter P2 Xby itauto. Qed. End sec_filter. End sec_fin_set. Section sec_map. Context `{FinSet A C} `{FinSet B D}.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
P, P2: A → Prop
H7: ∀ x : A, Decision (P x)
H8: ∀ x : A, Decision (P2 x)
X, Y: C
Hsub: ∀ a : A, P a → P2 a
a: A
HaP: P a ∧ a ∈ XP2 a ∧ a ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X, Y: C
Hsub: X ⊆ Yset_map f X ⊆ set_map f YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X, Y: C
Hsub: X ⊆ Yset_map f X ⊆ set_map f YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X, Y: C
Hsub: X ⊆ Y
a: B
Ha: a ∈ set_map f Xa ∈ set_map f YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X, Y: C
Hsub: X ⊆ Y
a: B
Ha: ∃ x : A, a = f x ∧ x ∈ Xa ∈ set_map f Yby firstorder. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X, Y: C
Hsub: X ⊆ Y
a: B
Ha: ∃ x : A, a = f x ∧ x ∈ X∃ x : A, a = f x ∧ x ∈ YA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X: Csize (set_map f X) ≤ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X: Csize (set_map f X) ≤ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X: Csize (list_to_set (f <$> elements X)) ≤ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X: C
fX: list B
HeqfX: fX = f <$> elements Xsize (list_to_set fX) ≤ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X: C
fX: list B
HeqfX: fX = f <$> elements X
x:= size (list_to_set fX): natx ≤ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X: C
fX: list B
HeqfX: fX = f <$> elements X
x:= size (list_to_set fX): natx ≤ length fX → x ≤ size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X: C
fX: list B
HeqfX: fX = f <$> elements X
x:= size (list_to_set fX): natlength fX = size XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X: C
fX: list B
HeqfX: fX = f <$> elements X
x:= size (list_to_set fX): natlength fX = (length ∘ elements) Xby apply fmap_length. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
X: C
x:= size (list_to_set (f <$> elements X)): natlength (f <$> elements X) = length (elements X)A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
Inj0: Inj eq eq f
a: A
X: Cf a ∈ set_map f X ↔ a ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
Inj0: Inj eq eq f
a: A
X: Cf a ∈ set_map f X ↔ a ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
Inj0: Inj eq eq f
a: A
X: C(∃ x : A, f a = f x ∧ x ∈ X) ↔ a ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
Inj0: Inj eq eq f
a: A
X: C(∃ x : A, f a = f x ∧ x ∈ X) → a ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
Inj0: Inj eq eq f
a: A
X: C
_v: A
HeqAv: f a = f _v
H_v: _v ∈ Xa ∈ Xby subst. Qed.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
f: A → B
Inj0: Inj eq eq f
a: A
X: C
_v: A
H_v: _v ∈ X
HeqAv: a = _va ∈ XA, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
X: CX ≡ set_map id Xby set_solver. Qed. End sec_map. Definition mmap_insert {I A SA : Type} {MI : Type -> Type} `{FinMap I MI} `{FinSet A SA} (i : I) (a : A) (m : MI SA) := <[ i := {[ a ]} ∪ m !!! i ]> m.A, C: Type
H: ElemOf A C
H0: Empty C
H1: Singleton A C
H2: Union C
H3: Intersection C
H4: Difference C
H5: Elements A C
EqDecision0: EqDecision A
H6: FinSet A C
B, D: Type
H7: ElemOf B D
H8: Empty D
H9: Singleton B D
H10: Union D
H11: Intersection D
H12: Difference D
H13: Elements B D
EqDecision1: EqDecision B
H14: FinSet B D
X: CX ≡ set_map id XI, A, SA: Type
MI: Type → Type
H: FMap MI
H0: ∀ A : Type, Lookup I A (MI A)
H1: ∀ A : Type, Empty (MI A)
H2: ∀ A : Type, PartialAlter I A (MI A)
H3: OMap MI
H4: Merge MI
H5: ∀ A : Type, MapFold I A (MI A)
EqDecision0: EqDecision I
H6: FinMap I MI
H7: ElemOf A SA
H8: Empty SA
H9: Singleton A SA
H10: Union SA
H11: Intersection SA
H12: Difference SA
H13: Elements A SA
EqDecision1: EqDecision A
H14: FinSet A SA
m: MI SA
i, j: I
a, b: Ab ∈ mmap_insert i a m !!! j ↔ a = b ∧ i = j ∨ b ∈ m !!! jI, A, SA: Type
MI: Type → Type
H: FMap MI
H0: ∀ A : Type, Lookup I A (MI A)
H1: ∀ A : Type, Empty (MI A)
H2: ∀ A : Type, PartialAlter I A (MI A)
H3: OMap MI
H4: Merge MI
H5: ∀ A : Type, MapFold I A (MI A)
EqDecision0: EqDecision I
H6: FinMap I MI
H7: ElemOf A SA
H8: Empty SA
H9: Singleton A SA
H10: Union SA
H11: Intersection SA
H12: Difference SA
H13: Elements A SA
EqDecision1: EqDecision A
H14: FinSet A SA
m: MI SA
i, j: I
a, b: Ab ∈ mmap_insert i a m !!! j ↔ a = b ∧ i = j ∨ b ∈ m !!! jI, A, SA: Type
MI: Type → Type
H: FMap MI
H0: ∀ A : Type, Lookup I A (MI A)
H1: ∀ A : Type, Empty (MI A)
H2: ∀ A : Type, PartialAlter I A (MI A)
H3: OMap MI
H4: Merge MI
H5: ∀ A : Type, MapFold I A (MI A)
EqDecision0: EqDecision I
H6: FinMap I MI
H7: ElemOf A SA
H8: Empty SA
H9: Singleton A SA
H10: Union SA
H11: Intersection SA
H12: Difference SA
H13: Elements A SA
EqDecision1: EqDecision A
H14: FinSet A SA
m: MI SA
i, j: I
a, b: Ab ∈ <[i:={[a]} ∪ m !!! i]> m !!! j ↔ a = b ∧ i = j ∨ b ∈ m !!! jI, A, SA: Type
MI: Type → Type
H: FMap MI
H0: ∀ A : Type, Lookup I A (MI A)
H1: ∀ A : Type, Empty (MI A)
H2: ∀ A : Type, PartialAlter I A (MI A)
H3: OMap MI
H4: Merge MI
H5: ∀ A : Type, MapFold I A (MI A)
EqDecision0: EqDecision I
H6: FinMap I MI
H7: ElemOf A SA
H8: Empty SA
H9: Singleton A SA
H10: Union SA
H11: Intersection SA
H12: Difference SA
H13: Elements A SA
EqDecision1: EqDecision A
H14: FinSet A SA
m: MI SA
i: I
a, b: Ab ∈ <[i:={[a]} ∪ m !!! i]> m !!! i ↔ a = b ∧ i = i ∨ b ∈ m !!! iI, A, SA: Type
MI: Type → Type
H: FMap MI
H0: ∀ A : Type, Lookup I A (MI A)
H1: ∀ A : Type, Empty (MI A)
H2: ∀ A : Type, PartialAlter I A (MI A)
H3: OMap MI
H4: Merge MI
H5: ∀ A : Type, MapFold I A (MI A)
EqDecision0: EqDecision I
H6: FinMap I MI
H7: ElemOf A SA
H8: Empty SA
H9: Singleton A SA
H10: Union SA
H11: Intersection SA
H12: Difference SA
H13: Elements A SA
EqDecision1: EqDecision A
H14: FinSet A SA
m: MI SA
i, j: I
a, b: A
Hij: i ≠ jb ∈ <[i:={[a]} ∪ m !!! i]> m !!! j ↔ a = b ∧ i = j ∨ b ∈ m !!! jI, A, SA: Type
MI: Type → Type
H: FMap MI
H0: ∀ A : Type, Lookup I A (MI A)
H1: ∀ A : Type, Empty (MI A)
H2: ∀ A : Type, PartialAlter I A (MI A)
H3: OMap MI
H4: Merge MI
H5: ∀ A : Type, MapFold I A (MI A)
EqDecision0: EqDecision I
H6: FinMap I MI
H7: ElemOf A SA
H8: Empty SA
H9: Singleton A SA
H10: Union SA
H11: Intersection SA
H12: Difference SA
H13: Elements A SA
EqDecision1: EqDecision A
H14: FinSet A SA
m: MI SA
i: I
a, b: Ab ∈ <[i:={[a]} ∪ m !!! i]> m !!! i ↔ a = b ∧ i = i ∨ b ∈ m !!! iby destruct (decide (a = b)); set_solver.I, A, SA: Type
MI: Type → Type
H: FMap MI
H0: ∀ A : Type, Lookup I A (MI A)
H1: ∀ A : Type, Empty (MI A)
H2: ∀ A : Type, PartialAlter I A (MI A)
H3: OMap MI
H4: Merge MI
H5: ∀ A : Type, MapFold I A (MI A)
EqDecision0: EqDecision I
H6: FinMap I MI
H7: ElemOf A SA
H8: Empty SA
H9: Singleton A SA
H10: Union SA
H11: Intersection SA
H12: Difference SA
H13: Elements A SA
EqDecision1: EqDecision A
H14: FinSet A SA
m: MI SA
i: I
a, b: Ab ∈ {[a]} ∪ m !!! i ↔ a = b ∧ i = i ∨ b ∈ m !!! iI, A, SA: Type
MI: Type → Type
H: FMap MI
H0: ∀ A : Type, Lookup I A (MI A)
H1: ∀ A : Type, Empty (MI A)
H2: ∀ A : Type, PartialAlter I A (MI A)
H3: OMap MI
H4: Merge MI
H5: ∀ A : Type, MapFold I A (MI A)
EqDecision0: EqDecision I
H6: FinMap I MI
H7: ElemOf A SA
H8: Empty SA
H9: Singleton A SA
H10: Union SA
H11: Intersection SA
H12: Difference SA
H13: Elements A SA
EqDecision1: EqDecision A
H14: FinSet A SA
m: MI SA
i, j: I
a, b: A
Hij: i ≠ jb ∈ <[i:={[a]} ∪ m !!! i]> m !!! j ↔ a = b ∧ i = j ∨ b ∈ m !!! jby set_solver. Qed.I, A, SA: Type
MI: Type → Type
H: FMap MI
H0: ∀ A : Type, Lookup I A (MI A)
H1: ∀ A : Type, Empty (MI A)
H2: ∀ A : Type, PartialAlter I A (MI A)
H3: OMap MI
H4: Merge MI
H5: ∀ A : Type, MapFold I A (MI A)
EqDecision0: EqDecision I
H6: FinMap I MI
H7: ElemOf A SA
H8: Empty SA
H9: Singleton A SA
H10: Union SA
H11: Intersection SA
H12: Difference SA
H13: Elements A SA
EqDecision1: EqDecision A
H14: FinSet A SA
m: MI SA
i, j: I
a, b: A
Hij: i ≠ jb ∈ m !!! j ↔ a = b ∧ i = j ∨ b ∈ m !!! j