The forward permutation p is an isomorphism from G to H: it
preserves each ordered colour index and transports adjacency.
Equations
Instances For
Executable isomorphism check, sound and complete for IsIso
(checkIso_iff). A plain Boolean fold so the kernel replays it without
unfolding Decidable instances.
Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Hex.GraphIso.IsIso.mk
{n k : Nat}
{G H : Colored n k}
{p : Perm n}
(hc : ∀ (i : Fin n), H.coloring.cells[p.get i] = G.coloring.cells[i])
(ha : ∀ (i j : Fin n), H.graph.adj (p.get i) (p.get j) = G.graph.adj i j)
:
IsIso G H p
Introduce IsIso from its two clauses. The definition is not
exposed across module boundaries, so consumers use this.
@[instance_reducible]
Equations
- Hex.GraphIso.instDecidableIsIso G H p = if h : Hex.GraphIso.checkIso G H p = true then isTrue ⋯ else isFalse ⋯
Two coloured graphs are isomorphic when some colour-preserving forward permutation transports one onto the other.
Equations
- Hex.GraphIso.Isomorphic G H = ∃ (p : Hex.GraphIso.Perm n), Hex.GraphIso.IsIso G H p
Instances For
theorem
Hex.GraphIso.Isomorphic.intro
{n k : Nat}
{G H : Colored n k}
(p : Perm n)
(h : IsIso G H p)
:
Isomorphic G H
theorem
Hex.GraphIso.Isomorphic.symm
{n k : Nat}
{G H : Colored n k}
(h : Isomorphic G H)
:
Isomorphic H G
theorem
Hex.GraphIso.Isomorphic.trans
{n k : Nat}
{G H K : Colored n k}
(hGH : Isomorphic G H)
(hHK : Isomorphic H K)
:
Isomorphic G K
theorem
Hex.GraphIso.isomorphic_relabel
{n k : Nat}
(G : Colored n k)
(l : Label n)
:
Isomorphic G (G.relabel l)