Skip to content
Browse chapters
Imports

Exact HAM-CYCLE certificate semantics

namespace CLRS.Chapter34theorem hamiltonianCycleVerifier_eq_true_iff (certificate input : List HamiltonianCycleSym) : hamiltonianCycleVerifier certificate input = true ↔ ∃ I vertices, decodeHamiltonianCycleInstance input = some I ∧ decodeHamiltonianCycleCertificate certificate = some vertices ∧ I.WellFormed ∧ I.targetSize = I.vertexCount ∧ I.ListRepresentsHamiltonianCycle vertices := by generalize hinput : decodeHamiltonianCycleInstance input = instanceResult generalize hcertificate : decodeHamiltonianCycleCertificate certificate = certificateResult cases instanceResult <;> cases certificateResult <;> simp [hamiltonianCycleVerifier, hinput, hcertificate]theorem mem_generalHAMCYCLE_iff_exists_certificate (input : List HamiltonianCycleSym) : input ∈ GeneralHAMCYCLE ↔ ∃ certificate, hamiltonianCycleVerifier certificate input = true := by constructor · rintro ⟨I, hdecode, hI, htarget, vertices, hvertices⟩ refine ⟨encodeHamiltonianCycleCertificate vertices, ?_⟩ exact (hamiltonianCycleVerifier_eq_true_iff _ _).2 ⟨I, vertices, hdecode, decode_encodeCliqueCertificate vertices, hI, htarget, hvertices⟩ · rintro ⟨certificate, hverify⟩ rcases (hamiltonianCycleVerifier_eq_true_iff certificate input).1 hverify with ⟨I, vertices, hdecode, _, hI, htarget, hvertices⟩ exact ⟨I, hdecode, hI, htarget, vertices, hvertices⟩end CLRS.Chapter34