1-- A finite union of finite sets is finite, in ZF without a choice function.2-- Part of Cumulus, the Grace17 mathematics library.3-- Copyright (c) 2026 Grant Passmore.4-- Released under the Apache License 2.0. See LICENSE in the repository root.5-- Authors: Grant Passmore67module Grace.Cumulus.Cardinal.FiniteUnion8import ListSupport910theorem union.insert (A S : Set)11shows⋃insert(S, A) = S ∪⋃A12proof13ext y14simp [set.union, insert.membership, union2.membership]1516theorem listSupport.finite_union (A : Set) (xs : List(A))17requires members : ∀ S ∈ A, Finite(S)18shows Finite(⋃listSupport{A}(xs))19proof20induction xs21| List.nil =>22rw listSupport.nil23have bounded : ⋃∅⊆∅bysimp [Subset, set.union, set.empty]24exact Finite.subset with Finite.empty, bounded25| List.cons(S, tail) using ih =>26have member : S ∈ A byassumption27have finite := members with S, member28rw [listSupport.cons, union.insert]29exact Finite.union with finite, ih3031theorem Finite.big_union (A : Set)32requires finite : Finite(A)33requires members : ∀ S ∈ A, Finite(S)34shows Finite(⋃A)35proof36obtain⟨xs, list, covers⟩:= Finite.list_cover with finite37have bound := listSupport.finite_union with*38have included : ⋃A ⊆⋃listSupport{A}(xs)39intros x hx40obtain⟨S, member, inS⟩:=set.union.forward with hx41have supported := covers with S, member42exact union.contains with supported, inS43exact Finite.subset with bound, included44