1-- The cycle double cover theorem: every finite bridgeless multigraph has a2-- list of cycles holding every edge exactly twice, as the cycles of its even3-- double cover.4-- Part of Cumulus, the Grace17 mathematics library.5-- Copyright (c) 2026 Grant Passmore.6-- Released under the Apache License 2.0. See LICENSE in the repository root.7-- Authors: Grant Passmore89module Grace.Cumulus.GraphTheory.DoubleCover.Theorem10import EvenDoubleCover11import CycleCover1213-- The cycle double cover theorem: the even double cover splits into cycles.14theorem cycleDoubleCover (V E leftEnd rightEnd : Set)15requires graph : Graph(V, E, leftEnd, rightEnd)16requires finiteVertices : Finite(V)17requires finiteEdges : Finite(E)18requires bridgeless : Bridgeless(V, E, leftEnd, rightEnd)19shows∃ H, ∃ I, CycleDoubleCover(V, E, leftEnd, rightEnd, H, I)20proof21obtain⟨H, I, cover⟩:= Bridgeless.even_double_cover22with graph, finiteVertices, finiteEdges, bridgeless23exact EvenDoubleCover.to_cycles with graph, finiteVertices, cover24