Michal Wallace
2018-08-24 15:09:18 UTC
I'm stuck on something that feels like it ought to be easy... (again :D)
and its facets are polytopes lying in the corresponding hyperplanes.
Assume F is a facet of a polytope T, embedded in hyperplane H, and E is a
facet of F, embedded in hyperplane h.
Clearly h⊂H, and also there's another facet F' of T embedded in another
hyperplane H' such that h⊂H', and therefore F and F' are adjacent facets.
It's easy to convince Isabelle that h⊂H, and it's easy enough to obtain the
set of hyperplanes that bound T... But I don't even know how to begin to
prove that (exactly) one of them other than H intersects H at h.
Part of my problem is that I'm working through a learning curve for
Isabelle and a separate learning curve for analysis, and I'm not sure which
one I'm struggling with at any given time.
Can anyone offer some advice here? Even just how to break this problem down
into smaller steps?
Here's what I have so far:
theory Adjacent
imports Main "HOL-Analysis.Polytope"begin
default_sort euclidean_space
section "adjacency"
definition adjacent :: "'a set ⇒ 'a set ⇒ bool" where
"adjacent x y ≡ x≠y ∧ (∃f. f facet_of x ∧ f facet_of y)"
lemma adjacent_facets_exist:
assumes T:"polytope T" "aff_dim T > 0"
and F:"F facet_of T" and E:"E facet_of F"
shows "∃!F'. F'≠F ∧ (E facet_of F') ∧ (F' facet_of T)"
― ‹Every edge of a polygon shares a vertex with another edge, every
face of a 3d polytope shares an edge with another face, etc.›proof
define dimF where dimF:"dimF = aff_dim F"
define dimE where dimE:"dimE = aff_dim E"
have "dimE = dimF-1" using F dimF E dimE facet_of_def by auto
― ‹Obtain the dimF hyperplane H containing F and the dimE hyperplane
h containing E›
from T have phT: "polyhedron T" using polytope_imp_polyhedron by auto
with F obtain H A B where h: "H = {x. A ∙ x = B} ∧ F = T ∩ H"
by (metis facet_of_polyhedron)
from F have phF: "polyhedron F" using phT facet_of_def
face_of_polyhedron_polyhedron by auto
with E obtain h a b where h: "h = {x. a ∙ x = b} ∧ E = F ∩ h"
by (metis facet_of_polyhedron)
― ‹The only reason E is a facet is that F is bounded. That boundary
must have been inherited from the boundaries of T, but I don't know
how to show it. GRRR...›
oops
end
From "HOL-Analysis.Polytope", we have that a polytope is a bounded
polyhedron, and so it's the intersection of a bunch of half-hyperspaces,and its facets are polytopes lying in the corresponding hyperplanes.
Assume F is a facet of a polytope T, embedded in hyperplane H, and E is a
facet of F, embedded in hyperplane h.
Clearly h⊂H, and also there's another facet F' of T embedded in another
hyperplane H' such that h⊂H', and therefore F and F' are adjacent facets.
It's easy to convince Isabelle that h⊂H, and it's easy enough to obtain the
set of hyperplanes that bound T... But I don't even know how to begin to
prove that (exactly) one of them other than H intersects H at h.
Part of my problem is that I'm working through a learning curve for
Isabelle and a separate learning curve for analysis, and I'm not sure which
one I'm struggling with at any given time.
Can anyone offer some advice here? Even just how to break this problem down
into smaller steps?
Here's what I have so far:
theory Adjacent
imports Main "HOL-Analysis.Polytope"begin
default_sort euclidean_space
section "adjacency"
definition adjacent :: "'a set ⇒ 'a set ⇒ bool" where
"adjacent x y ≡ x≠y ∧ (∃f. f facet_of x ∧ f facet_of y)"
lemma adjacent_facets_exist:
assumes T:"polytope T" "aff_dim T > 0"
and F:"F facet_of T" and E:"E facet_of F"
shows "∃!F'. F'≠F ∧ (E facet_of F') ∧ (F' facet_of T)"
― ‹Every edge of a polygon shares a vertex with another edge, every
face of a 3d polytope shares an edge with another face, etc.›proof
define dimF where dimF:"dimF = aff_dim F"
define dimE where dimE:"dimE = aff_dim E"
have "dimE = dimF-1" using F dimF E dimE facet_of_def by auto
― ‹Obtain the dimF hyperplane H containing F and the dimE hyperplane
h containing E›
from T have phT: "polyhedron T" using polytope_imp_polyhedron by auto
with F obtain H A B where h: "H = {x. A ∙ x = B} ∧ F = T ∩ H"
by (metis facet_of_polyhedron)
from F have phF: "polyhedron F" using phT facet_of_def
face_of_polyhedron_polyhedron by auto
with E obtain h a b where h: "h = {x. a ∙ x = b} ∧ E = F ∩ h"
by (metis facet_of_polyhedron)
― ‹The only reason E is a facet is that F is bounded. That boundary
must have been inherited from the boundaries of T, but I don't know
how to show it. GRRR...›
oops
end