APNOutputs/AICollaborator/Graphs/bipartite_graph_reconstruction_conjecture_2.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: Google DeepMind published the AlphaProof Nexus proof artifacts. The pinned repository identifies the mathematical sources and collaborators, including OEIS, Erdős Problems, Gergely Bérczi, and Mario Krenn; those source records remain the authority for individual credit.
Project sources: Pinned AlphaProof Nexus results documentation, AlphaProof Nexus paper, Pinned human-written natural-language proof companions
68 declarations, 0 contain sorry, 0 declared as axioms
Imports (1)
- abbrev
edgeCountline 49 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
SimpleGraph,NatProof uses:
Nat.card,Sym2,SimpleGraph.edgeSet1 instances, coercions and auxiliary constants left out.
- structure
BipartiteIsoA graph isomorphism that preserves both sides of the bipartition line 52 sourceSource documentation
Strict bipartite isomorphism that explicitly preserves the left and right partitions.
L4DEL explanation
is a graph isomorphism whose underlying bijection preserves both parts L and R.
BipartiteIso G H leftU rightVstrengthens an ordinary graph isomorphism by requiring its vertex equivalence to preserve membership inleftUandrightVseparately. Swapping the two sides is not allowed.- The inherited relation isomorphism preserves and reflects adjacency.
map_leftandmap_rightmake preservation of the named parts explicit in both directions.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Quot.sound, propext what this means
Statement uses:
SimpleGraph,Finsetstructure BipartiteIso (G H : SimpleGraph V) (leftU rightV : Finset V) extends G ≃g H where …
- lemma
isBipartiteWith_deleteIncidenceSetDeleting the incidence set of a vertex keeps the graph bipartite with the same partitions line 59 sourceSource comment
Deleting the incidence set of a vertex keeps the graph bipartite with the same partitions.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,SimpleGraph.deleteIncidenceSetProof uses:
Disjoint,Set,SimpleGraph.Adj,Or,And,Membership.mem,SimpleGraph.IsBipartiteWith.mk,SimpleGraph.deleteIncidenceSet_le15 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
lemma isBipartiteWith_deleteIncidenceSet (v : V) (hBipartite : G.IsBipartiteWith leftU rightV) : (G.deleteIncidenceSet v).IsBipartiteWith leftU rightV := by … - def
bipartiteDeckThe multiset of incidence-deleted cards up to bipartite isomorphism line 69 sourceSource documentation
Deck of a bipartite graph. Deck is the multiset of all vertex-deleted subgraphs viewed unlabeled up to bipartite isomorphism.
L4DEL explanation
The bipartite deck is the multiset
bipartiteDeck G leftU rightVrecords one card for every vertexv: all edges incident tovare deleted,vremains as an isolated vertex, and the result is stored as its entire bipartite-isomorphism class. Repeated isomorphism classes retain multiplicity.deleteIncidenceSet vremoves incident edges rather than deleting the vertex from the type.- Mapping over
univproduces one set-valued card per vertex, and the outerMultisetforgets their labels while retaining how often each card occurs.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,SimpleGraph,Finset,Multiset,SetProof uses:
Multiset.map,setOf,Nonempty, BipartiteIso,SimpleGraph.deleteIncidenceSet,Finset.val,Finset.univdef bipartiteDeck : Multiset (Set (SimpleGraph V)) := …
- def
degreeProfileThe multiset of degrees seen around a vertex line 79 sourceSource comment
The neighbor-degree profile of x ∈ U ⊔ V is the multiset P(x) = {deg_G(y) : y ∈ Neighbors(x)}L4DEL explanation
The degree profile and type of x are
degreeProfile G xlistsG.degree yonce for every neighboryofx. It remembers the degrees surroundingxbut deliberately forgets which neighboring vertex supplied each degree.neighborFinset xsupplies distinct adjacent vertices.- Mapping
G.degreeover its underlying multiset preserves multiplicity, which is essential when several neighbors have the same degree.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,SimpleGraph,Multiset,NatProof uses:
Multiset.map,SimpleGraph.degree,SimpleGraph.Adj,Finset.val,SimpleGraph.neighborFinset2 instances, coercions and auxiliary constants left out.
def degreeProfile (x : V) : Multiset ℕ := …
- def
τA vertex type combines its degree with its neighbors' degrees line 85 sourceSource comment
The type of x is τ(x) = (deg_G(x), P(x))L4DEL explanation
The degree profile and type of x are
τ G xis the ordered pair consisting of the degree ofxand its degree profile. Two vertices have the same type exactly when they have the same degree and the same multiset of neighboring degrees.- The first coordinate is local degree.
- The second coordinate is a multiset, so it detects repeated neighbor degrees without identifying the neighbors themselves.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,SimpleGraph,Prod,Nat,MultisetProof uses:
Prod.mk,SimpleGraph.degree,SimpleGraph.Adj, degreeProfile2 instances, coercions and auxiliary constants left out.
def τ (x : V) : ℕ × Multiset ℕ := …
- def
RThe typecount R(u, t) is the number of neighbors of u in rightV whose type τ equals t line 92 sourceSource comment
The typecount R(u, t) is the number of neighbors of u in rightV whose type τ equals t. Symmetrically, R'(v, s) is the number of neighbors of v in leftU whose type τ equals s.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Prod,Nat,MultisetProof uses:
Finset.card,Finset.filter,And,Membership.mem,Eq, τ,SimpleGraph.neighborFinset,SimpleGraph.Adj8 instances, coercions and auxiliary constants left out.
def R (u : V) (t : ℕ × Multiset ℕ) : ℕ := …
Mentions: u
- def
R'line 95 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Prod,Nat,MultisetProof uses:
Finset.card,Finset.filter,And,Membership.mem,Eq, τ,SimpleGraph.neighborFinset,SimpleGraph.Adj8 instances, coercions and auxiliary constants left out.
- def
doubleDeckThe double deck is D_2(G) = {G - x - y := x ≠ y ∈ U ⊔ V} viewed unlabeled up t bipartite isomorphism line 101 sourceSource comment
The double deck is D_2(G) = {G - x - y := x ≠ y ∈ U ⊔ V} viewed unlabeled up t bipartite isomorphism.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Multiset,SetProof uses:
Multiset.map,Prod,setOf,Nonempty, BipartiteIso,SimpleGraph.deleteIncidenceSet,Prod.fst,Prod.snd,Finset.val,Finset.filter,Ne,Eq,Finset.univ2 instances, coercions and auxiliary constants left out.
def doubleDeck : Multiset (Set (SimpleGraph V)) := …
- lemma
multiset_map_eq_implies_bijEqual unlabeled decks can be matched card by card line 110 sourceL4DEL explanation
Equality of the two decks also gives a bijection f : Ω → Ω
If two functions on the same finite type produce equal multisets of values, this lemma constructs a permutation pairing every input of the first function with an input of the second having the same value. Applied to decks, it recovers a bijection between the deleted vertices of matched cards.
- Multiset equality supplies equal fiber cardinalities for every card value.
- Those balanced fibers are assembled into an equivalence
esatisfyingf a = g (e a)for every input.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,Eq,Multiset,Multiset.map,Finset.val,Finset.univ,Exists,EquivProof uses:
Iff,Finset,LE.le,Nat,Finset.card,Finset.biUnion,Finset.filter,And,Function.Injective,Membership.mem,Finset.all_card_le_biUnion_card_iff_exists_injective,Iff.mp,Eq.rec,Finset.sum,Finset.image,Trans.simple,Finset.sum_le_sum,LE.le.trans_eq,Finset.card_mono,Finset.filter_subset_filterand 45 more37 instances, coercions and auxiliary constants left out.
Tactic trace: 15 steps
Open to load the checked before-and-after goal states.
lemma multiset_map_eq_implies_bij {α β : Type*} [Fintype α] (f g : α → β) (h : Multiset.map f (Finset.univ : Finset α).val = Multiset.map g (Finset.univ : Finset α).val) : ∃ (e : α ≃ α), ∀ a, f a = g (e a) := by … - def
BipartiteIso_reflline 120 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
SimpleGraph,Finset, BipartiteIsoProof uses:
RelIso,SimpleGraph.Adj,RelIso.refl,BipartiteIso.mk1 instances, coercions and auxiliary constants left out.
- def
BipartiteIso_symmline 126 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
SimpleGraph,Finset, BipartiteIsoProof uses:
RelIso,SimpleGraph.Adj,RelIso.symm,BipartiteIso.toRelIso,BipartiteIso.mk2 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
BipartiteIso_edgeCountline 138 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset, BipartiteIso,Eq,Nat, edgeCountProof uses:
RelIso,SimpleGraph.Adj,Iff,Membership.mem,Equiv,RelIso.toEquiv,RelIso.mk,id,Nat.card_congr,Sym2,SimpleGraph.edgeSet,Equiv.subtypeEquiv,Set,Equiv.mk,Sym2.map,Equiv.symm,Sym2.ind,Sym2.mk,Prod.mk,of_eq_trueand 14 more10 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- lemma
edgeCount_deleteIncidenceSetAn incidence-deleted card loses exactly the degree of its isolated vertex line 144 sourceL4DEL explanation
removes exactly the edges incident to v
Deleting every edge incident to
vchanges the edge count frome(G)toe(G) − degree(v). Each incident undirected edge is removed once, even though degree is defined through the neighbor set.- The incidence set is identified with the image of the neighbors of
vunder the unordered-edge constructor. - Finite-set subtraction then gives the exact cardinality formula used to reconstruct degrees from card edge counts.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Eq,Nat, edgeCount,SimpleGraph.deleteIncidenceSet,HSub.hSub,SimpleGraph.degreeProof uses:
Eq.mpr,Finset.card,Sym2,Finset.filter,Not,Membership.mem,Set,SimpleGraph.incidenceSet,Set.toFinset,SimpleGraph.edgeSet,Finset.univ,id,congr,Nat.card,SimpleGraph.deleteEdges,SimpleGraph.neighborFinset,congrArg,Eq.trans,Fintype.card,SDiff.sdiffand 64 more43 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
lemma edgeCount_deleteIncidenceSet (v : V) [DecidableRel G.Adj] : edgeCount (G.deleteIncidenceSet v) = edgeCount G - G.degree v := by …Mentions: edgeCount
- The incidence set is identified with the image of the neighbors of
- def
classEdgeCountline 152 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Set,SimpleGraph,NatProof uses:
InfSet.sInf,setOf,Exists,And,Membership.mem,Eq, edgeCount2 instances, coercions and auxiliary constants left out.
- lemma
classEdgeCount_eqline 155 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Eq,Nat, classEdgeCount,setOf,Nonempty, BipartiteIso,SimpleGraph.deleteIncidenceSet, edgeCountProof uses:
id,IsLeast.csInf_eq,Exists,And,Membership.mem,Set,SimpleGraph.deleteEdges,SimpleGraph.incidenceSet,Nat.card,Sym2,SimpleGraph.edgeSet,And.intro,lowerBounds,Exists.intro,Nonempty.intro,BipartiteIso.mk,OfNat.ofNat,RelIso,SimpleGraph.Adj,Iff.rfland 44 more35 instances, coercions and auxiliary constants left out.
Tactic trace: 16 steps
Open to load the checked before-and-after goal states.
- lemma
bipartiteDeck_edgeCountDeckline 169 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,Finset,SimpleGraph,Eq,Multiset,Set, bipartiteDeck,Nat,Multiset.map, classEdgeCountProof uses:
Eq.mpr,id,congrArg,Eq.reflTactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
sum_edgeCount_deleteIncidenceSetline 175 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Eq,Nat,Finset.sum,Finset.univ, edgeCount,SimpleGraph.deleteIncidenceSet,HSub.hSub,HMul.hMul,Fintype.card,OfNat.ofNatProof uses:
Eq.mpr,Finset.card,Sym2,Finset.filter,Not,Membership.mem,Set,SimpleGraph.incidenceSet,Set.toFinset,SimpleGraph.edgeSet,HAdd.hAdd,id,congr,Nat.card,congrArg,Finset.sum_congr,Eq.refl,Finset,Eq.trans,SimpleGraph.deleteEdgesand 52 more90 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- lemma
sum_classEdgeCount_deckline 182 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Eq,Nat,Multiset.sum,Multiset.map,Set, classEdgeCount, bipartiteDeck,Finset.sum,Finset.univ, edgeCount,SimpleGraph.deleteIncidenceSetProof uses:
Multiset,Finset.val,id,Eq.mpr,setOf,Nonempty, BipartiteIso,Function.comp,congrArg,Multiset.map_map,Eq.rec,Eq.refl,funext, classEdgeCount_eq,Eq.symm,Finset.sum_eq_multiset_sum2 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
multiset_sum_eqline 197 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Eq,Multiset,Set, bipartiteDeck,Nat,Multiset.sum,Multiset.map, classEdgeCountProof uses:
Eq.mpr,id,congrArg,Eq.refl2 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
bipartiteDeck_determines_edgeCountRecover the original number of edges from the deck line 203 sourceL4DEL explanation
equation (2) shows that the deck determines e(K)
Equal bipartite decks of graphs on at least three vertices force equal total edge counts. Summing the edge counts of all cards counts each original edge once for every deleted vertex not incident to it, hence exactly
n−2times.- Each card's edge count is invariant under the bipartite isomorphism class stored in the deck.
- Positivity of
n−2permits cancellation, turning equality of the card sums intoedgeCount G = edgeCount H.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,Finset,SimpleGraph,GE.ge,Nat,Fintype.card,OfNat.ofNat,Eq,Multiset,Set, bipartiteDeck, edgeCountProof uses:
Multiset.sum,Multiset.map, classEdgeCount, multiset_sum_eq,Finset.sum,Finset.univ,SimpleGraph.deleteIncidenceSet, sum_classEdgeCount_deck,HSub.hSub,HMul.hMul, sum_edgeCount_deleteIncidenceSet,SimpleGraph.Adj,GT.gt,Nat.sub_pos_of_lt,Eq.mpr,id,congrArg,Eq.symm,Nat.sub_mul,Eq.refland 2 more11 instances, coercions and auxiliary constants left out.
Tactic trace: 15 steps
Open to load the checked before-and-after goal states.
lemma bipartiteDeck_determines_edgeCount {G H : SimpleGraph V} (hV : Fintype.card V ≥ 3) (h : bipartiteDeck G leftU rightV = bipartiteDeck H leftU rightV) : edgeCount G = edgeCount H := by …Mentions: bipartiteDeck, edgeCount
- def
degreeMultisetThe unlabeled multiset of all vertex degrees line 219 sourceL4DEL explanation
the degree multisets of G and H are equal
degreeMultiset Glists the degree of every vertex ofGwhile forgetting which vertex has which degree. This is the intermediate invariant reconstructed from the edge counts of the deck's cards.- Every vertex appears once through
Finset.univ. - Using a multiset retains the multiplicity of each degree value.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,SimpleGraph,Multiset,NatProof uses:
Multiset.map,SimpleGraph.degree,SimpleGraph.Adj,Finset.val,Finset.univ2 instances, coercions and auxiliary constants left out.
def degreeMultiset (G : SimpleGraph V) : Multiset ℕ := …
- Every vertex appears once through
- lemma
deck_edgeCounts_eqline 222 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,Finset,SimpleGraph,Eq,Multiset,Set, bipartiteDeck,Nat,Multiset.map, edgeCount,SimpleGraph.deleteIncidenceSet,Finset.val,Finset.univProof uses: classEdgeCount,
id,Eq.mpr,setOf,Nonempty, BipartiteIso,Function.comp,congrArg,Multiset.map_map,Eq.rec,Eq.refl,funext, classEdgeCount_eq,Eq.symmTactic trace: 13 steps
Open to load the checked before-and-after goal states.
- lemma
degreeMultiset_eq_map_edgeCountline 242 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Eq,Multiset,Nat, degreeMultiset,Multiset.map,HSub.hSub, edgeCount,SimpleGraph.deleteIncidenceSet,Finset.val,Finset.univProof uses:
id,Eq.mpr,Finset.card,SimpleGraph.neighborFinset,Nat.card,Sym2,SimpleGraph.edgeSet,SimpleGraph.deleteEdges,SimpleGraph.incidenceSet,Finset.filter,Membership.mem,Set,And,Not,congr,congrArg,Multiset.map_congr,Eq.refl,Finset,SimpleGraph.neighborFinset_eq_filterand 59 more48 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
- lemma
bipartiteDeck_determines_degreeMultisetEqual decks determine the complete degree distribution line 250 sourceL4DEL explanation
equation (1) shows that the degree multisets of G and H are equal
Every type of proper subgraph which occurs in A or B
Once the original edge count and the multiset of card edge counts are known, the identity
degree(v)=e(G)−e(Δv(G))recovers the multiset of vertex degrees. Equal decks therefore give equal degree multisets.- The deck first determines
edgeCount G = edgeCount H. - Mapping subtraction by that common edge count over the matched card counts yields identical degree multisets.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion, Paul J. Kelly, A congruence theorem for trees (1957)
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,Finset,SimpleGraph,GE.ge,Nat,Fintype.card,OfNat.ofNat,DecidableRel,SimpleGraph.Adj,Eq,Multiset,Set, bipartiteDeck, degreeMultisetProof uses:
Multiset.map,HSub.hSub, edgeCount,SimpleGraph.deleteIncidenceSet,Finset.val,Finset.univ, degreeMultiset_eq_map_edgeCount, bipartiteDeck_determines_edgeCount, deck_edgeCounts_eq,Eq.mpr,Function.comp,id,congrArg,Multiset.map_map,Function.comp_def,Eq.refl,Eq.symm6 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
lemma bipartiteDeck_determines_degreeMultiset {G H : SimpleGraph V} (hV : Fintype.card V ≥ 3) [DecidableRel G.Adj] [DecidableRel H.Adj] (h : bipartiteDeck G leftU rightV = bipartiteDeck H leftU rightV) : degreeMultiset G = degreeMultiset H := by …Mentions: bipartiteDeck, degreeMultiset
- The deck first determines
- lemma
degreeMultiset_eq_of_bipartiteIsoline 266 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Finset, BipartiteIso,Eq,Multiset,Nat, degreeMultisetProof uses:
RelIso,Iff,Membership.mem,Equiv,RelIso.toEquiv,RelIso.mk,id,Eq.subst,Multiset.map,SimpleGraph.degree,Finset.val,Finset.univ,Function.comp,Eq.trans,Eq.symm,Multiset.map_map,congr_arg,Multiset.map_univ_val_equiv,Multiset.map_congr,rfland 12 more10 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
degree_deleteIncidenceSetline 275 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Eq,Nat,SimpleGraph.degree,SimpleGraph.deleteIncidenceSet,ite,OfNat.ofNat,HSub.hSubProof uses:
Eq.mpr,Finset.card,Finset.filter,And,Not,Membership.mem,Sym2,Set,SimpleGraph.incidenceSet,Sym2.mk,Prod.mk,Finset.univ,id,congr,SimpleGraph.neighborFinset,congrArg,Finset,Eq.trans,SimpleGraph.neighborFinset_eq_filter,Finset.filter.congr_simpand 40 more36 instances, coercions and auxiliary constants left out.
Tactic trace: 7 steps
Open to load the checked before-and-after goal states.
- lemma
count_degreeMultisetline 282 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Nat,Eq,Multiset.count, degreeMultiset,Finset.card,Finset.filter,SimpleGraph.degree,Finset.univProof uses:
id,Eq.mpr,Multiset.countP,Multiset.map,SimpleGraph.neighborFinset,Finset.val,congrArg,Eq.trans,Multiset.card,Multiset.filter,Multiset.countP_congr,Multiset.map_congr,Eq.refl,Multiset,Membership.mem,Std.Symm,propext,comm,DecidablePred,Multiset.countP_mapand 18 more14 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
count_degreeMultiset_delline 289 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Nat,Eq,Multiset.count, degreeMultiset,SimpleGraph.deleteIncidenceSet,Finset.card,Finset.filter,SimpleGraph.degree,Finset.univProof uses:
id,Eq.mpr,Multiset.map,Finset.val,congrArg,Eq.trans,Multiset.card,Multiset.filter,Multiset,Multiset.count_map,Multiset.toFinset,DecidablePred,Eq.symm,Multiset.toFinset_card_of_nodup,Multiset.Nodup.filter,Finset.nodup,Finset,Multiset.toFinset_filter,Finset.filter.congr_simp,Eq.refland 9 more17 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
count_degreeProfile_eqline 296 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Nat,Eq,Multiset.count, degreeProfile,Finset.card,Finset.filter,SimpleGraph.degree,SimpleGraph.neighborFinsetProof uses:
id,Eq.mpr,Multiset.map,Finset.val,congrArg,Eq.trans,Multiset.card,Multiset.filter,Multiset,Multiset.count_map,Multiset.toFinset,DecidablePred,Finset,Eq.symm,Multiset.toFinset_card_of_nodup,Multiset.Nodup.filter,Finset.nodup,Multiset.toFinset_filter,Finset.filter.congr_simp,Eq.refland 9 more15 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
sum_indicator_eqline 303 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Nat,Eq,HAdd.hAdd,Finset.card,Finset.filter,SimpleGraph.degree,SimpleGraph.neighborFinset,SimpleGraph.deleteIncidenceSet,Finset.univ,ite,OfNat.ofNatProof uses:
Eq.mpr,Finset.sum,Finset.erase,id,congr,congrArg,Eq.trans,Finset,Finset.filter.congr_simp,funext,SimpleGraph.neighborFinset_eq_filter,Finset.card_filter,AddCommMonoid,Eq.symm,Finset.sum_erase_add,Finset.mem_univ,Eq.refl,ite_congr,Not,Finset.sum_congrand 48 more62 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- lemma
count_degreeMultiset_deleteIncidenceSet_addThe degree-count recurrence before and after deleting one incidence set line 317 sourceL4DEL explanation
Counting vertices of degree k before and after deleting the incidence set of v gives
For each degree
d, this identity balances four effects of isolatingv: the new card counts, the isolated deleted vertex, neighbors dropping from degreed+1tod, and the original global degree counts.- A non-neighbor keeps its degree, while a neighbor loses exactly one and
vbecomes degree zero. - Counting each case gives the recurrence used to reconstruct the neighbor-degree profile one degree at a time.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Nat,Eq,HAdd.hAdd,Multiset.count, degreeMultiset,SimpleGraph.deleteIncidenceSet,ite,SimpleGraph.degree,OfNat.ofNat, degreeProfileProof uses:
Finset.card,Finset.filter,SimpleGraph.neighborFinset, count_degreeProfile_eq,Finset.univ, count_degreeMultiset_del, count_degreeMultiset, sum_indicator_eq,Decidable.byContradiction,Not12 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
lemma count_degreeMultiset_deleteIncidenceSet_add {V : Type*} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (v : V) (d : ℕ) : Multiset.count d (degreeMultiset (G.deleteIncidenceSet v)) + (if G.degree v = d then 1 else 0) + Multiset.count d (degreeProfile G v) = (if d = 0 then 1 else 0) + Multiset.count (d + 1) (degreeProfile G v) + Multiset.count d (degreeMultiset G) := by …Mentions: degreeMultiset, degreeProfile
- A non-neighbor keeps its degree, while a neighbor loses exactly one and
- lemma
eq_of_add_eq_add_succline 328 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,HAdd.hAdd,OfNat.ofNat,Exists,GE.ge,AndProof uses:
Exists.elim,And.elim,by_contra,Not,absurd,False,Eq.rec,Nat.rec,Ne.symm,Nat.zero,mt,Nat.succ,Mathlib.Tactic.Linarith.eq_of_not_lt_of_not_gt,Not.intro,LT.lt,Mathlib.Tactic.Linarith.lt_irrefl,Int,Eq.mp,Neg.neg,HSub.hSuband 52 more81 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
count_degreeProfile_eq_zeroline 334 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Nat,GE.ge,Fintype.card,Eq,Multiset.count, degreeProfile,OfNat.ofNatProof uses:
Eq.mpr,Not,Membership.mem,Multiset,Multiset.map,SimpleGraph.degree,SimpleGraph.Adj,Finset.val,SimpleGraph.neighborFinset,id,Function.comp,LT.lt,False,LE.le.not_gt,LE.le,Eq.rec,Exists.choose,And,Iff.mp,Existsand 4 more12 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
profile_eq_of_isoA matched card and global degrees determine the deleted vertex's degree profile line 340 sourceL4DEL explanation
Induction on k in (8) gives
When matched deleted vertices have the same degree, their cards are bipartite-isomorphic, and the original graphs have equal degree multisets, the multisets of their neighbors' original degrees are equal.
- The degree-count recurrence is written once for each graph; global counts, card counts, and the deleted-vertex indicator cancel across the two equations.
- The remaining recurrence equates profile counts by induction in
d, with eventual zero counts above the finite vertex bound.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,Finset,Eq,Multiset,Nat, degreeMultiset,SimpleGraph.degree, BipartiteIso,SimpleGraph.deleteIncidenceSet, degreeProfileProof uses: degreeMultiset_eq_of_bipartiteIso,
HAdd.hAdd,Multiset.count,OfNat.ofNat,ite, count_degreeMultiset_deleteIncidenceSet_add,Eq.mpr,id,congrArg,Eq.refl,Decidable.byContradiction,Not,Exists,GE.ge,And,Exists.intro,Fintype.card,And.intro, count_degreeProfile_eq_zero, eq_of_add_eq_add_succ and 2 more9 instances, coercions and auxiliary constants left out.
Tactic trace: 27 steps
Open to load the checked before-and-after goal states.
lemma profile_eq_of_iso {G H : SimpleGraph V} [DecidableRel G.Adj] [DecidableRel H.Adj] (leftU rightV : Finset V) (h_degG_eq_degH : degreeMultiset G = degreeMultiset H) (v : V) (u : V) (h_deg_vu : G.degree v = H.degree u) (iso : BipartiteIso (G.deleteIncidenceSet v) (H.deleteIncidenceSet u) leftU rightV) : degreeProfile G v = degreeProfile H u := by …Mentions: degreeMultiset, u, BipartiteIso, degreeProfile
- lemma
unique_isolated_of_2_connectedThe deleted vertex is the unique isolated vertex of its card line 371 sourceL4DEL explanation
has a unique isolated vertex, namely v
Under the development's 2-connectivity hypothesis and
|V| ≥ 3, the incidence-deleted card atvhas degree zero exactly atv. Every other vertex retains an edge to someone other thanv.- Connectivity rules out degree zero in the original graph.
- Connectivity after deleting any one vertex rules out a vertex whose only neighbor was
v, so no other isolated point is created.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,And,SimpleGraph.Connected,setOf,Ne,SimpleGraph.induce,GE.ge,Nat,Fintype.card,OfNat.ofNat,Iff,Eq,SimpleGraph.degree,SimpleGraph.deleteIncidenceSet,SimpleGraph.AdjProof uses:
Eq.mpr,Membership.mem,Sym2,Set,SimpleGraph.incidenceSet,Sym2.mk,Prod.mk,id,forall_congr,Finset.card,SimpleGraph.neighborFinset,SimpleGraph.deleteEdges,congrArg,Eq.trans,Finset,Finset.filter,Not,Finset.univ,EmptyCollection.emptyCollection,SimpleGraph.neighborFinset_eq_filterand 74 more56 instances, coercions and auxiliary constants left out.
Tactic trace: 22 steps
Open to load the checked before-and-after goal states.
lemma unique_isolated_of_2_connected {V : Type*} [Fintype V] [DecidableEq V] (G : SimpleGraph V) (h2 : G.Connected ∧ ∀ v, (G.induce {x | x ≠ v}).Connected) (hV : Fintype.card V ≥ 3) (v : V) : ∀ x : V, (G.deleteIncidenceSet v).degree x = 0 ↔ x = v := by … - lemma
iso_maps_isolatedline 387 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset, BipartiteIso,Iff,Eq,Nat,SimpleGraph.degree,SimpleGraph.Adj,OfNat.ofNat,Equiv,RelIso.toEquiv,BipartiteIso.toRelIsoProof uses:
RelIso,Membership.mem,BipartiteIso.mk,RelIso.mk,Iff.mp,Function.comp,Finset.card,SimpleGraph.neighborFinset,Eq.trans,Eq.symm,Finset.card_equiv,of_eq_true,True,forall_congr,congr,congrArg,propext,iff_self,eq_true,True.introand 3 more16 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
f_preserves_partitionsCard matching preserves the named left and right parts line 397 sourceL4DEL explanation
Since φv preserves L and R, (6) implies that f preserves the two parts
The permutation matching deleted cards sends each vertex to a vertex in the same bipartition part. The key is that the deleted vertex is recognizable inside its card as the unique isolated vertex.
- A bipartite card isomorphism preserves
leftUandrightVby definition. - Uniqueness identifies its image of
vwith the matching permutation'sf v, transferring both membership equivalences tof.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,And,SimpleGraph.Connected,setOf,Ne,SimpleGraph.induce,GE.ge,Nat,Fintype.card,OfNat.ofNat,Equiv,Nonempty, BipartiteIso,SimpleGraph.deleteIncidenceSet,Iff,Membership.memProof uses:
Classical.choice,Eq,RelIso.toEquiv,SimpleGraph.Adj,BipartiteIso.toRelIso, iso_maps_isolated,Eq.mpr,SimpleGraph.degree,eq_of_heq,HEq,Eq.refl,HEq.refl,Eq.symm,SimpleGraph.neighborSet,Lean.Meta.FastSubsingleton.elim, unique_isolated_of_2_connected,BipartiteIso.map_left,Eq.mp,congrArg,BipartiteIso.map_rightand 1 more20 instances, coercions and auxiliary constants left out.
Tactic trace: 29 steps
Open to load the checked before-and-after goal states.
lemma f_preserves_partitions {V : Type*} [Fintype V] [DecidableEq V] (G H : SimpleGraph V) (leftU rightV : Finset V) (hG_2_conn : G.Connected ∧ ∀ v, (G.induce {x | x ≠ v}).Connected) (hH_2_conn : H.Connected ∧ ∀ v, (H.induce {x | x ≠ v}).Connected) (hV : Fintype.card V ≥ 3) (f : V ≃ V) (hf_iso : ∀ v, Nonempty (BipartiteIso (G.deleteIncidenceSet v) (H.deleteIncidenceSet (f v)) leftU rightV)) : (∀ v, v ∈ leftU ↔ f v ∈ leftU) ∧ (∀ v, v ∈ rightV ↔ f v ∈ rightV) := by …Mentions: BipartiteIso
- A bipartite card isomorphism preserves
- lemma
connected_of_induce_connectedline 427 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,GE.ge,Nat,Fintype.card,OfNat.ofNat,SimpleGraph.Connected,setOf,Ne,SimpleGraph.induceProof uses:
Eq.mpr,Eq.refl,Iff.mpr,Exists,SimpleGraph.Reachable,SimpleGraph.connected_iff_exists_forall_reachable,Or.elim,IsEmpty,Nonempty,isEmpty_or_nonempty,False.elim,Eq.mp,False,Eq.trans,LE.le,congrArg,Fintype.card_eq_zero,Eq,connected_of_induce_connected.match_1,Exists.introand 45 more38 instances, coercions and auxiliary constants left out.
Tactic trace: 11 steps
Open to load the checked before-and-after goal states.
- lemma
unique_isolated_mappedline 436 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,DecidableRel,SimpleGraph.Adj,SimpleGraph.Iso,Iff,Eq,Nat,SimpleGraph.degree,OfNat.ofNatProof uses:
Equiv,of_eq_true,RelIso.mk,Eq.trans,True,congrArg,Equiv.symm,Eq.symm,Iff.mp,Eq.rec,Finset.card_equiv,SimpleGraph.neighborFinset,Membership.mem,Finset,forall_congr,congr,propext,Equiv.apply_symm_apply,iff_self,eq_trueand 3 more13 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
deleteIncidenceSet_induce_connectedline 444 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,SimpleGraph.Connected,setOf,Ne,SimpleGraph.induce,GE.ge,Nat,Fintype.card,OfNat.ofNat,SimpleGraph.Iso,SimpleGraph.deleteIncidenceSet,Eq,SimpleGraph.AdjProof uses:
id,Eq.mpr,Not,Exists,Membership.mem,Set,SimpleGraph.Reachable,Subtype.mk,Eq.trans,Subtype,congrArg,funext,Eq.rec,SimpleGraph.deleteEdges,SimpleGraph.incidenceSet,Exists.elim,Eq.mp,deleteIncidenceSet_induce_connected.match_1,Exists.intro,RelIsoand 59 more32 instances, coercions and auxiliary constants left out.
Tactic trace: 16 steps
Open to load the checked before-and-after goal states.
- lemma
H_is_2_connectedMatched incidence-deleted cards transfer 2-connectivity to H line 462 sourceL4DEL explanation
Since the degree multisets of G and H are equal, H also has minimum degree at least 2.
If every incidence-deleted card of
Gis graph-isomorphic to a matched card ofHandGis 2-connected, then every vertex-deleted induced subgraph ofHis connected and henceHitself is connected.- The unique isolated vertex forces each card isomorphism to send the deleted vertex of
Gto its matched vertex ofH. - Restricting the card isomorphism away from those isolated vertices transfers connectivity of every induced deletion; with at least three vertices, those connected deletions imply connectivity of
H.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,And,SimpleGraph.Connected,setOf,Ne,SimpleGraph.induce,GE.ge,Nat,Fintype.card,OfNat.ofNat,Equiv,Nonempty,SimpleGraph.Iso,SimpleGraph.deleteIncidenceSetProof uses:
Equiv.symm,Classical.choice,Eq,Equiv.apply_symm_apply,Eq.mpr,id,congrArg,Eq.symm,Nonempty.intro,SimpleGraph.Adj,Iff,SimpleGraph.degree,Eq.refl, unique_isolated_of_2_connected,DecidableRel,Classical.decRel,ite,HSub.hSub, degree_deleteIncidenceSet,Eq.mpand 11 more19 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.
lemma H_is_2_connected {V : Type*} [Fintype V] [DecidableEq V] (G H : SimpleGraph V) (hG_2_conn : G.Connected ∧ ∀ v, (G.induce {x | x ≠ v}).Connected) (hV : Fintype.card V ≥ 3) (f : V ≃ V) (hf_iso : ∀ v, Nonempty (G.deleteIncidenceSet v ≃g H.deleteIncidenceSet (f v))) : H.Connected ∧ ∀ v, (H.induce {x | x ≠ v}).Connected := by … - The unique isolated vertex forces each card isomorphism to send the deleted vertex of
- def
typeDropHow a neighbor's type changes when one incident edge is removed line 494 sourceL4DEL explanation
d −̇ 1 = max(d−1, 0) is truncated subtraction and M \ {a} means deletion of one occurrence
typeDrop t dlowers the type's degree coordinate by one using natural-number subtraction and erases one occurrence ofdfrom its degree-profile multiset. It models deleting the edge to a vertex of degreed.- Only one degree occurrence is erased, matching one lost neighbor rather than all neighbors of that degree.
- The proof applies this operation only to genuine neighbors, whose original degree is positive.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Prod,Nat,MultisetProof uses:
Prod.mk,HSub.hSub,Prod.fst,OfNat.ofNat,Multiset.erase,Prod.snd4 instances, coercions and auxiliary constants left out.
def typeDrop (t : ℕ × Multiset ℕ) (d : ℕ) : ℕ × Multiset ℕ := …
- def
rightV_typesline 497 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Multiset,Prod,NatProof uses:
Multiset.map, τ,Finset.val - lemma
count_map_eq_card_filterline 501 sourcestandard axioms: Quot.sound, propext what this means
Statement uses:
DecidableEq,Multiset,Eq,Nat,Multiset.count,Multiset.map,Multiset.card,Multiset.filterProof uses:
Eq.mpr,id,congrArg,Multiset.count_map,of_eq_true,Eq.trans,True,Multiset.filter_congr,Membership.mem,Iff.of_eq,eq_self4 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
multiset_eq_of_add_map_dropline 506 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
DecidableEq,Multiset,Nat,GT.gt,OfNat.ofNat,LT.lt,Membership.mem,Eq,HAdd.hAdd,Multiset.mapProof uses:
Finset.sup,Union.union,Finset,Multiset.toFinset,LE.le,Finset.le_sup,Finset.mem_union_left,Iff.mpr,Multiset.mem_toFinset,Finset.mem_union_right,GE.ge,HSub.hSub,Multiset.count,Nat.recAux,Not,Eq.mpr,id,congrArg,Multiset.count_eq_zero,Eq.refland 13 more33 instances, coercions and auxiliary constants left out.
Tactic trace: 75 steps
Open to load the checked before-and-after goal states.
- lemma
tau_deleteIncidenceSet_rightV_proofline 568 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,Membership.mem,Eq,Prod,Nat,Multiset, τ,SimpleGraph.deleteIncidenceSet,ite,SimpleGraph.Adj, typeDrop,SimpleGraph.degreeProof uses:
Ne,Disjoint,Set,Or,And,Iff.mp,Not,Set.disjoint_left,Eq.mp,congrArg,id,dite,Prod.mk, degreeProfile,Eq.mpr,if_pos,Prod.ext,HSub.hSub,Prod.fst,OfNat.ofNatand 139 more94 instances, coercions and auxiliary constants left out.
Tactic trace: 74 steps
Open to load the checked before-and-after goal states.
- lemma
rightV_types_deleteIncidenceSet_mapline 621 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,Membership.mem,Eq,Multiset,Prod,Nat, rightV_types,SimpleGraph.deleteIncidenceSet,Multiset.map,ite,SimpleGraph.Adj, typeDrop, τ,SimpleGraph.degree,Finset.valProof uses:
id,Multiset.map_congr,rfl, tau_deleteIncidenceSet_rightV_proof11 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
rightV_val_eq_filter_add_sdiffline 632 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Eq,Multiset,Finset.val,HAdd.hAdd,Finset.filter,SimpleGraph.Adj,SDiff.sdiff,SimpleGraph.neighborFinsetProof uses:
Not,Finset.ext,of_eq_true,Iff,Membership.mem,Eq.trans,And,True,congr,congrArg,iff_self,Eq.mpr,id,Eq.symm,Multiset.filter,Multiset.filter_add_not15 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- def
S_multisetline 641 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Multiset,Prod,NatProof uses:
Multiset.map, τ,Finset.val,Finset.filter,Membership.mem,SimpleGraph.neighborFinset,SimpleGraph.Adj4 instances, coercions and auxiliary constants left out.
- def
T_multisetline 644 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Multiset,Prod,NatProof uses:
Multiset.map, τ,Finset.val,SDiff.sdiff,SimpleGraph.neighborFinset,SimpleGraph.Adj3 instances, coercions and auxiliary constants left out.
- lemma
rightV_types_eq_S_add_Tline 647 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Eq,Multiset,Prod,Nat, rightV_types,HAdd.hAdd, S_multiset, T_multisetProof uses:
id,Multiset.map, τ,Finset.val,Finset.filter,Membership.mem,SimpleGraph.neighborFinset,SimpleGraph.Adj,SDiff.sdiff, rightV_val_eq_filter_add_sdiff,Eq.mpr,congrArg,Multiset.map_add,HAdd,Eq.rec,Eq.refl,Finset.ext,of_eq_true,Iff,Eq.transand 4 more12 instances, coercions and auxiliary constants left out.
Tactic trace: 10 steps
Open to load the checked before-and-after goal states.
- lemma
rightV_types_del_eqSplit the opposite side into changed neighbor types and unchanged non-neighbor types line 660 sourceL4DEL explanation
if x is adjacent to u, then deleting the incidence set of u removes the edge ux
After deleting all edges incident to a left-side vertex
u, every right-side neighbor has its type transformed bytypeDrop, while every right-side non-neighbor keeps its original type. The equality records those two multisets separately.- Bipartiteness ensures deleting
u's incidence set cannot otherwise alter a right-side vertex's degree profile. - Filtering the right part into neighbors and non-neighbors converts the pointwise type formula into a multiset sum.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,Membership.mem,Eq,Multiset,Prod,Nat, rightV_types,SimpleGraph.deleteIncidenceSet,HAdd.hAdd,Multiset.map, typeDrop,SimpleGraph.degree,SimpleGraph.Adj, S_multiset, T_multisetProof uses:
ite, τ,Finset.val, rightV_types_deleteIncidenceSet_map,Eq.mpr,id,congrArg,Finset.filter,SimpleGraph.neighborFinset,Finset.ext,of_eq_true,Iff,Eq.trans,And,True,congr,iff_self,SDiff.sdiff,Not,Multiset.filterand 18 more22 instances, coercions and auxiliary constants left out.
Tactic trace: 27 steps
Open to load the checked before-and-after goal states.
lemma rightV_types_del_eq {V : Type*} [Fintype V] [DecidableEq V] (G : SimpleGraph V) (leftU rightV : Finset V) (hBipartite : G.IsBipartiteWith leftU rightV) (u : V) (hu : u ∈ leftU) : rightV_types (G.deleteIncidenceSet u) rightV = Multiset.map (fun t => typeDrop t (G.degree u)) (S_multiset G rightV u) + T_multiset G rightV u := by …Mentions: u, rightV_types, typeDrop, S_multiset, T_multiset
- Bipartiteness ensures deleting
- lemma
BipartiteIso_degree_eqline 700 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset, BipartiteIso,Eq,Nat,SimpleGraph.degree,SimpleGraph.Adj,Equiv,RelIso.toEquiv,BipartiteIso.toRelIsoProof uses:
SimpleGraph.neighborFinset,Finset.map,Equiv.toEmbedding,Equiv.symm,Finset.ext,Eq.mpr,Iff,Membership.mem,Exists,And,id,congr,congrArg,Eq.trans,Function.Embedding,funext,Iff.intro,Exists.intro,And.intro,Iff.mprand 8 more17 instances, coercions and auxiliary constants left out.
Tactic trace: 25 steps
Open to load the checked before-and-after goal states.
- lemma
BipartiteIso_degreeProfile_eqline 724 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset, BipartiteIso,Eq,Multiset,Nat, degreeProfile,Equiv,RelIso.toEquiv,SimpleGraph.Adj,BipartiteIso.toRelIsoProof uses:
id,Multiset.map,SimpleGraph.degree,Finset.val,SimpleGraph.neighborFinset,Multiset.map_congr,rfl,Membership.mem, BipartiteIso_degree_eq,Eq.mpr,congrArg,Eq.symm,Function.comp,Multiset.map_map,Finset.map,Equiv.toEmbedding,Equiv.symm,Finset.ext,Iff,Existsand 19 more16 instances, coercions and auxiliary constants left out.
Tactic trace: 39 steps
Open to load the checked before-and-after goal states.
- lemma
tau_eq_of_isoline 764 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset, BipartiteIso,Eq,Prod,Nat,Multiset, τ,Equiv,RelIso.toEquiv,SimpleGraph.Adj,BipartiteIso.toRelIsoProof uses:
id,SimpleGraph.degree, BipartiteIso_degree_eq, degreeProfile, BipartiteIso_degreeProfile_eq,Eq.mpr,Prod.mk,congrArg,Eq.refl8 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
rightV_types_eq_of_bijline 773 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Equiv,Eq,Prod,Nat,Multiset, τ,Iff,Membership.mem, rightV_typesProof uses:
id,Multiset.map,Finset.val,Multiset.map_congr,rfl,Eq.mpr,congrArg,Eq.symm,Function.comp,Multiset.map_map,Iff.mpr,Multiset.count,Multiset.ext,Multiset.card,Multiset.filter, count_map_eq_card_filter,dite,Equiv.symm,Eq.mp,Equiv.apply_symm_applyand 23 more14 instances, coercions and auxiliary constants left out.
Tactic trace: 76 steps
Open to load the checked before-and-after goal states.
- lemma
rightV_types_eq_of_bipartiteIsoline 849 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset, BipartiteIso,Eq,Multiset,Prod,Nat, rightV_typesProof uses: rightV_types_eq_of_bij,
RelIso.toEquiv,SimpleGraph.Adj,BipartiteIso.toRelIso, tau_eq_of_iso,BipartiteIso.map_rightTactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
rightV_types_del_eq_of_isoline 858 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset, BipartiteIso,SimpleGraph.deleteIncidenceSet,Eq,Multiset,Prod,Nat, rightV_typesProof uses: rightV_types_eq_of_bipartiteIso
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
S_add_map_T_eqMatched cards give a cancellable equation for neighboring-type multisets line 867 sourceL4DEL explanation
Taking the number of occurrences of an arbitrary type t in (13) gives
The global types on the opposite side and the local types in the matched deleted cards are equal. Decomposing both by adjacency yields the manuscript's balance equation between the two neighboring-type multisets and their type-dropped images.
S_multisetcontains types of neighbors on the opposite side;T_multisetcontains types of non-neighbors.- Equal global and deleted-card type multisets let the unchanged
Tterms cancel, leavingS_G + drop(S_H) = S_H + drop(S_G).
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,Equiv,Nonempty, BipartiteIso,SimpleGraph.deleteIncidenceSet,Eq,Prod,Nat,Multiset, τ,Iff,Membership.mem,HAdd.hAdd, S_multiset,Multiset.map, typeDrop and 2 moreProof uses:
Classical.choice, rightV_types, rightV_types_del_eq_of_iso, T_multiset, rightV_types_del_eq,Iff.mp,congrArg,Prod.fst, rightV_types_eq_S_add_T, rightV_types_eq_of_bij,Trans.trans,Eq.trans,Mathlib.Tactic.Abel.term,OfNat.ofNat,Mathlib.Tactic.Abel.subst_into_add,Mathlib.Tactic.Abel.term_atom,Mathlib.Tactic.Abel.term_add_const,zero_add,Eq.symm,Mathlib.Tactic.Abel.const_add_termand 6 more35 instances, coercions and auxiliary constants left out.
Tactic trace: 26 steps
Open to load the checked before-and-after goal states.
lemma S_add_map_T_eq {V : Type*} [Fintype V] [DecidableEq V] (G H : SimpleGraph V) (leftU rightV : Finset V) (hBipartiteG : G.IsBipartiteWith leftU rightV) (hBipartiteH : H.IsBipartiteWith leftU rightV) (f : V ≃ V) (hf_iso : ∀ v, Nonempty (BipartiteIso (G.deleteIncidenceSet v) (H.deleteIncidenceSet (f v)) leftU rightV)) (hf_type : ∀ v, τ G v = τ H (f v)) (hf_left : ∀ v, v ∈ leftU ↔ f v ∈ leftU) (hf_right : ∀ v, v ∈ rightV ↔ f v ∈ rightV) (u : V) (hu : u ∈ leftU) : S_multiset G rightV u + Multiset.map (fun t => typeDrop t (G.degree u)) (S_multiset H rightV (f u)) = S_multiset H rightV (f u) + Multiset.map (fun t => typeDrop t (G.degree u)) (S_multiset G rightV u) := by …Mentions: BipartiteIso, τ, u, S_multiset, typeDrop
- lemma
S_multiset_eqDescending degree induction recovers each neighboring-type multiset line 910 sourceL4DEL explanation
equality of the type-profile counts can be proved by descending induction on the first coordinate of t
The balance equation involving
S_G,S_H, andtypeDropforcesS_G = S_H. Type dropping strictly lowers the first coordinate, so the equality can be solved from the highest degrees downward.- Degree-zero vertices have empty neighbor-type multisets and form the immediate base case.
- Otherwise every type in either multiset has positive first coordinate; the generic multiset lemma cancels their strictly lower dropped images by descending induction.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,Equiv,Nonempty, BipartiteIso,SimpleGraph.deleteIncidenceSet,Eq,Prod,Nat,Multiset, τ,Iff,Membership.mem, S_multisetProof uses:
HAdd.hAdd,Multiset.map, typeDrop,SimpleGraph.degree,SimpleGraph.Adj, S_add_map_T_eq,dite,OfNat.ofNat,EmptyCollection.emptyCollection,Eq.mpr,Not,id,Eq.trans,Multiset.filter,Finset.val,SimpleGraph.neighborFinset,forall_congr,implies_congr,Eq.refl,Iff.mprand 32 more36 instances, coercions and auxiliary constants left out.
Tactic trace: 40 steps
Open to load the checked before-and-after goal states.
lemma S_multiset_eq {V : Type*} [Fintype V] [DecidableEq V] (G H : SimpleGraph V) (leftU rightV : Finset V) (hBipartiteG : G.IsBipartiteWith leftU rightV) (hBipartiteH : H.IsBipartiteWith leftU rightV) (f : V ≃ V) (hf_iso : ∀ v, Nonempty (BipartiteIso (G.deleteIncidenceSet v) (H.deleteIncidenceSet (f v)) leftU rightV)) (hf_type : ∀ v, τ G v = τ H (f v)) (hf_left : ∀ v, v ∈ leftU ↔ f v ∈ leftU) (hf_right : ∀ v, v ∈ rightV ↔ f v ∈ rightV) (u : V) (hu : u ∈ leftU) : S_multiset G rightV u = S_multiset H rightV (f u) := by …Mentions: BipartiteIso, τ, u, S_multiset
- def
typeProfileThe multiset of full vertex types around one vertex line 947 sourceL4DEL explanation
The type profile of u is the multiset of the types of its neighbors
typeProfile G xmaps the vertex-type invariantτ Gover every neighbor ofx. Compared withdegreeProfile, it remembers both each neighbor's degree and that neighbor's own surrounding degree multiset.- The profile remains unlabeled: it records which types occur and with what multiplicity, not the identities of their carriers.
- Equality of these profiles under the matching bijection is the last invariant needed before reconstructing adjacency.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,SimpleGraph,Multiset,Prod,NatProof uses:
Multiset.map, τ,Finset.val,SimpleGraph.neighborFinset,SimpleGraph.Adj2 instances, coercions and auxiliary constants left out.
def typeProfile (G : SimpleGraph V) (x : V) : Multiset (ℕ × Multiset ℕ) := …
- lemma
typeProfile_eq_Sline 950 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,Membership.mem,Eq,Multiset,Prod,Nat, typeProfile, S_multisetProof uses:
Disjoint,Set,SimpleGraph.Adj,Or,And,SimpleGraph.IsBipartiteWith.mk,id,Eq.mpr,Multiset.map, τ,Finset.val,SimpleGraph.neighborFinset,Finset.filter,congrArg,Finset.filter_true_of_mem,Eq.mp,propext,SimpleGraph.mem_neighborFinset,Or.inl,Eq.transand 13 more32 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
typeProfile_eq_S_rightline 959 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,Membership.mem,Eq,Multiset,Prod,Nat, typeProfile, S_multisetProof uses:
id,Multiset.map, τ,Finset.val,SimpleGraph.neighborFinset,SimpleGraph.Adj,Finset.filter,Disjoint,Set,Or,And,SimpleGraph.IsBipartiteWith.mk,Eq.mpr,congrArg,Finset.filter_true_of_mem,by_contra,Not,False.elim,False,Eq.mpand 13 more33 instances, coercions and auxiliary constants left out.
Tactic trace: 6 steps
Open to load the checked before-and-after goal states.
- lemma
count_typeProfile_eq_one_iff_adjDistinct vertex types turn profile membership into adjacency line 968 sourceL4DEL explanation
Since types are pairwise distinct, adjacency is determined by type profiles
If every vertex type in
Gis distinct, the type ofyappears exactly once in the type profile ofxprecisely whenxis adjacent toy. No other neighbor can impersonateyby carrying the same type.- Adjacency inserts
yintox's neighbor set and therefore insertsτ G yinto the mapped multiset. - Conversely, an occurrence comes from some neighbor with that type; pairwise distinctness identifies that neighbor with
y.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Ne,Prod,Nat,Multiset, τ,Iff,Eq,Multiset.count, typeProfile,OfNat.ofNat,SimpleGraph.AdjProof uses:
id,Eq.mpr,Prod.mk,SimpleGraph.degree, degreeProfile,Multiset.map,Finset.val,SimpleGraph.neighborFinset,Multiset.card,Multiset.filter,congrArg,Eq.trans,Multiset.count_map,Multiset.filter_congr,Membership.mem,Iff.of_eq,propext,Function.Injective.eq_iff,Iff.mp,Notand 21 more19 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
lemma count_typeProfile_eq_one_iff_adj {V : Type*} [Fintype V] [DecidableEq V] (G : SimpleGraph V) (h_distinct : ∀ x y : V, x ≠ y → τ G x ≠ τ G y) (x y : V) : Multiset.count (τ G y) (typeProfile G x) = 1 ↔ G.Adj x y := by …Mentions: τ, typeProfile
- Adjacency inserts
- lemma
adjacency_preserved_leftType and type-profile preservation force adjacency preservation from the left side line 978 sourceL4DEL explanation
τK (b) ∈ TK (a)
For a left-part vertex
x, equality of type profiles and pointwise preservation ofτshow thatyoccurs as a neighbor ofxexactly whenf yoccurs as a neighbor off x.- Distinct types make
τ G ya unique marker foryinsidetypeProfile G x. - Transporting that marker through the profile equality and the bijection gives the corresponding adjacency statement in
H.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,Equiv,Ne,Prod,Nat,Multiset, τ,Eq,Membership.mem, typeProfile,Iff,SimpleGraph.AdjProof uses:
by_contra,Not,absurd,False,id,Multiset.map,Finset.val,SimpleGraph.neighborFinset,Eq.mpr,Prod.mk,SimpleGraph.degree, degreeProfile,congr,congrArg,Multiset.map_congr,Eq.refl,Function.comp,Iff.intro,Exists.elim,Andand 34 more18 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.
lemma adjacency_preserved_left {V : Type*} [Fintype V] [DecidableEq V] (G H : SimpleGraph V) (leftU rightV : Finset V) (f : V ≃ V) (h_distinct : ∀ x y : V, x ≠ y → τ G x ≠ τ G y) (h_tau : ∀ v, τ G v = τ H (f v)) (h_typeProfile : ∀ u, u ∈ leftU → typeProfile G u = typeProfile H (f u)) (x y : V) (hx : x ∈ leftU) : G.Adj x y ↔ H.Adj (f x) (f y) := by …Mentions: τ, u, typeProfile
- Distinct types make
- lemma
type_preserving_bijection_is_isoUpgrade the card-matching bijection to a bipartite graph isomorphism line 994 sourceL4DEL explanation
Thus f is a graph isomorphism
A vertex bijection that preserves both partition sides, all vertex types, and the matched incidence-deleted cards must preserve every edge. The proof packages that adjacency equivalence with the side-preservation witnesses as a
BipartiteIso.- Neighboring-type multisets agree for left-side vertices, so adjacency from the left side is preserved.
- Symmetry handles edges presented from the right, while bipartiteness rules out right-to-right pairs; the resulting relation isomorphism uses the original bijection
f.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,Ne,Prod,Nat,Multiset, τ,And,SimpleGraph.Connected,setOf,SimpleGraph.induce,GE.ge,Fintype.card,OfNat.ofNat,Eq,Finset.univ,Union.unionand 6 moreProof uses: S_multiset, S_multiset_eq, typeProfile,
Iff.mp, typeProfile_eq_S,Eq.mpr,id,congrArg,Eq.refl,SimpleGraph.Adj, adjacency_preserved_left,dite,Not,Finset.mem_univ,Or.resolve_left,Eq.mp,Or,propext,Finset.mem_union,SimpleGraph.adj_command 13 more41 instances, coercions and auxiliary constants left out.
Tactic trace: 49 steps
Open to load the checked before-and-after goal states.
lemma type_preserving_bijection_is_iso {V : Type*} [Fintype V] [DecidableEq V] (G H : SimpleGraph V) (leftU rightV : Finset V) (hG_bipartite : G.IsBipartiteWith leftU rightV) (hH_bipartite : H.IsBipartiteWith leftU rightV) (hG_distinct : ∀ x y : V, x ≠ y → τ G x ≠ τ G y) (hG_2_conn : G.Connected ∧ ∀ v, (G.induce {x | x ≠ v}).Connected) (hV : Fintype.card V ≥ 3) (hV_parts : (univ : Finset V) = leftU ∪ rightV) (f : V ≃ V) (hf_iso : ∀ v, Nonempty (BipartiteIso (G.deleteIncidenceSet v) (H.deleteIncidenceSet (f v)) leftU rightV)) (hf_type : ∀ v, τ G v = τ H (f v)) (hf_left : ∀ v, v ∈ leftU ↔ f v ∈ leftU) …Mentions: τ, BipartiteIso
- theorem
Conjecture2Reconstructing a typed bipartite graph from its incidence-deletion deck line 1069 sourceSource comment
Let G = (U ⊔ V, E) be a finite simple bipartite graph with |U| = u, |V| = v, n = u + v ≥ 3. Assume: 1. G is 2-connected. 2. G is not a regular graph (the degree sequence is non-constant on U ⊔ V) 3. All vertex types are pairwise distinct Then deck(G) determines G uniquely up to bipartite isomorphism.L4DEL explanation
If DB(G) = DB(H), then G and H are bipartite-isomorphic.
Every type of proper subgraph which occurs in A or B
every finite simple undirected graph on three or more vertices is determined, up to isomorphism, by its collection of vertex-deleted subgraphs
Let
GandHuse the same finite bipartition. IfGremains connected after deleting any vertex, its vertex types are pairwise distinct, and the two incidence-deletion decks agree, then a bijection preserving the two parts also preserves every edge. Thus the deck determinesGup to bipartite isomorphism under these strong distinguishability hypotheses.- Equality of decks pairs every incidence-deleted card of
Gwith a bipartite-isomorphic card ofH. - From those paired cards the proof recovers degrees, degree profiles, vertex types, and then each vertex's multiset of neighbouring types.
- Pairwise distinct vertex types make adjacency readable from the neighbouring-type multiset, so the card pairing extends to a bipartition-preserving graph isomorphism.
- The Lean statement also accepts
G_not_regular, but the proof term never uses it and the companion theorem does not assume non-regularity. It is therefore a redundant formal hypothesis, not part of the mathematical mechanism described here.
Sources and attribution: Pinned Lean source (0647711a7118), Human-written graph-reconstruction proof companion, Paul J. Kelly, A congruence theorem for trees (1957), J. A. Bondy and R. L. Hemminger, Graph reconstruction—a survey (1977)
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,SimpleGraph,Finset,SimpleGraph.IsBipartiteWith,GE.ge,Nat,Fintype.card,OfNat.ofNat,Eq,Finset.univ,Union.union,And,SimpleGraph.Connected,setOf,Ne,SimpleGraph.induce,Not,SimpleGraph.IsRegularOfDegree,SimpleGraph.Adjand 7 moreProof uses:
Exists,Equiv,SimpleGraph.deleteIncidenceSet, multiset_map_eq_implies_bij,Exists.intro,Membership.mem,Nonempty.intro,BipartiteIso.mk,RelIso,RelIso.refl,Iff,RelIso.toEquiv,Iff.intro,And.intro,Eq.rec, edgeCount, bipartiteDeck_determines_edgeCount, degreeMultiset, bipartiteDeck_determines_degreeMultiset,SimpleGraph.degreeand 63 more37 instances, coercions and auxiliary constants left out.
Tactic trace: 68 steps
Open to load the checked before-and-after goal states.
theorem Conjecture2 -- G, H are finite simple bipartite graphs on at least 3 vertices. (V : Type*) [Fintype V] [DecidableEq V] (G H : SimpleGraph V) (leftU rightV : Finset V) (hGBipartite : G.IsBipartiteWith leftU rightV) (hHBipartite : H.IsBipartiteWith leftU rightV) (hV : Fintype.card V ≥ 3) (hV_parts : (univ : Finset V) = leftU ∪ rightV) -- G is 2-connected means G is connected, and the subgraph after removal of any vertex is still connected. (G_2_connected : G.Connected ∧ ∀ (v : V), (G.induce {x | x ≠ v}).Connected) -- G is not a regular graph (G_not_regular : ∀ d : ℕ, ¬ G.IsRegularOfDegree d) … - Equality of decks pairs every incidence-deleted card of