theory Plane imports Enumerator FaceDivision RTranCl begin
definition maxGon :: "nat ==> nat"where "maxGon p ≡ p+3"
declare maxGon_def [simp]
definition duplicateEdge :: "graph ==> face ==> vertex ==> vertex ==> bool"where "duplicateEdge g f a b ≡ 2 ≤ directedLength f a b ∧ 2 ≤ directedLength f b a ∧ b ∈ set (neighbors g a)"
primrec containsUnacceptableEdgeSnd :: "(nat ==> nat ==> bool) ==> nat ==> nat list ==> bool"where "containsUnacceptableEdgeSnd N v [] = False" | "containsUnacceptableEdgeSnd N v (w#ws) = (case ws of [] ==> False | (w'#ws') ==> if v < w ∧ w < w' ∧ N w w' then True else containsUnacceptableEdgeSnd N w ws)"
primrec containsUnacceptableEdge :: "(nat ==> nat ==> bool) ==> nat list ==> bool"where "containsUnacceptableEdge N [] = False" | "containsUnacceptableEdge N (v#vs) = (case vs of [] ==> False | (w#ws) ==> if v < w ∧ N v w then True else containsUnacceptableEdgeSnd N v vs)"
definition containsDuplicateEdge :: "graph ==> face ==> vertex ==> nat list ==> bool"where "containsDuplicateEdge g f v is ≡ containsUnacceptableEdge (λi j. duplicateEdge g f (f∙v) (f∙v)) is"
definition containsDuplicateEdge' :: "graph ==> face ==> vertex ==> nat list ==> bool"where "containsDuplicateEdge' g f v is ≡ 2 ≤ |is| ∧ ((∃k < |is| - 2. let i0 = is!k; i1 = is!(k+1); i2 = is!(k+2) in (duplicateEdge g f (f∙v) (f∙v)) ∧ (i0 < i1) ∧ (i1 < i2)) ∨ (let i0 = is!0; i1 = is!1 in (duplicateEdge g f (f∙v) (f∙v)) ∧ (i0 < i1)))"
definition generatePolygon :: "nat ==> vertex ==> face ==> graph ==> graph list"where "generatePolygon n v f g ≡ let enumeration = enumerator n |vertices f|; enumeration = [is ← enumeration. ¬ containsDuplicateEdge g f v is]; vertexLists = [indexToVertexList f v is. is ← enumeration] in [subdivFace g f vs. vs ← vertexLists]"
definition next_plane0 :: "nat ==> graph ==> graph list" (‹next'_plane0›) where "next_plane0 g ≡ if final g then [] else ⊔∈nonFinals g⊔∈vertices f⊔∈[3..<Suc(maxGon p)] generatePolygon i v f g"
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.