A (one dimensional) cellular automaton is a function1 F : Σ → Σ with the property that there is a K > 0 such that F (x)i depends only on the 2K + 1 coordinates xi−K , xi−K+1, . . . , xi−1, xi, xi+1, . . . , xi+K . A periodic point of σ is any x such that σ^p (x) = x for some p ∈ N, and a periodic point of F is any x such that F^q (x) = x for some q ∈ N. Given a cellular automaton F, a point x ∈ Σ is jointly periodic if there are p, q ∈ N such that σ^p (x) = F^q (x) = x, that is, it is a periodic point under both functions.
This project aims to explore the nature of one-dimensional Cellular Automata, in the hope of finding the structure of cellular automata through its periodic points.
LEMMA Research Project / Code / Source code / Program (1) / Program / Source / STL / container_concepts.h
2034 viewsLicense: MIT
ubuntu2004
/*1* Copyright (c) 19992* Silicon Graphics Computer Systems, Inc.3*4* Permission to use, copy, modify, distribute and sell this software5* and its documentation for any purpose is hereby granted without fee,6* provided that the above copyright notice appear in all copies and7* that both that copyright notice and this permission notice appear8* in supporting documentation. Silicon Graphics makes no9* representations about the suitability of this software for any10* purpose. It is provided "as is" without express or implied warranty.11*/1213#ifndef __STL_CONTAINER_CONCEPTS_H14#define __STL_CONTAINER_CONCEPTS_H151617#include <concept_checks.h>1819#ifdef __STL_USE_CONCEPT_CHECKS202122// This file covers the following concepts:23// _Container24// _ForwardContainer25// _ReversibleContainer26// _const_ReversibleContainer27// _RandomAccessContainer28//2930struct _ERROR_IN_STL_CONTAINER {3132/* Container expresssions */3334template <class _Container>35static void36__begin_iterator_accessor_requirement_violation(_Container __c) {37__c.begin();38}39template <class _Container>40static void41__const_begin_iterator_accessor_requirement_violation(const _Container& __c) {42__c.begin();43}44template <class _Container>45static void46__end_iterator_accessor_requirement_violation(_Container __c) {47__c.end();48}49template <class _Container>50static void51__const_end_iterator_accessor_requirement_violation(const _Container& __c) {52__c.end();53}5455template <class _Container>56static void57__rbegin_iterator_accessor_requirement_violation(_Container __c) {58__c.rbegin();59}60template <class _Container>61static void62__const_rbegin_iterator_accessor_requirement_violation(const _Container& __c) {63__c.rbegin();64}65template <class _Container>66static void67__rend_iterator_accessor_requirement_violation(_Container __c) {68__c.rend();69}70template <class _Container>71static void72__const_rend_iterator_accessor_requirement_violation(const _Container& __c) {73__c.rend();74}75template <class _Container>76static void77__size_function_must_be_const(const _Container& __c) {78__c.size();79}80template <class _Container>81static void82__size_function_requirement_violation(_Container& __c) {83__c.size();84__size_function_must_be_const(__c);85}86template <class _Container>87static void88__max_size_function_must_be_const(const _Container& __c) {89__c.max_size();90}91template <class _Container>92static void93__max_size_function_requirement_violation(_Container& __c) {94__c.max_size();95__max_size_function_must_be_const(__c);96}97template <class _Container>98static void99__empty_function_must_be_const(const _Container& __c) {100__c.empty();101}102template <class _Container>103static void104__empty_function_requirement_violation(_Container& __c) {105__c.empty();106__empty_function_must_be_const(__c);107}108template <class _Container>109static void110__swap_function_requirement_violation(_Container& __c) {111__c.swap(__c);112}113114};115116117__STL_TYPEDEF_REQUIREMENT(iterator);118__STL_TYPEDEF_REQUIREMENT(const_iterator);119120/* Containers */121122template <class _Container>123struct _Container_concept_specification {124static void125_Container_requirement_violation(_Container __c) {126// Refinement of Assignable127_Assignable_concept_specification<_Container>::_Assignable_requirement_violation(__c);128// Associated Types129__value_type__typedef_requirement_violation<_Container>();130__difference_type__typedef_requirement_violation<_Container>();131__size_type__typedef_requirement_violation<_Container>();132__reference__typedef_requirement_violation<_Container>();133__const_reference__typedef_requirement_violation<_Container>();134__pointer__typedef_requirement_violation<_Container>();135__const_pointer__typedef_requirement_violation<_Container>();136__iterator__typedef_requirement_violation<_Container>();137__const_iterator__typedef_requirement_violation<_Container>();138// Valid Expressions139_ERROR_IN_STL_CONTAINER::__const_begin_iterator_accessor_requirement_violation(__c);140_ERROR_IN_STL_CONTAINER::__const_end_iterator_accessor_requirement_violation(__c);141_ERROR_IN_STL_CONTAINER::__begin_iterator_accessor_requirement_violation(__c);142_ERROR_IN_STL_CONTAINER::__end_iterator_accessor_requirement_violation(__c);143_ERROR_IN_STL_CONTAINER::__size_function_requirement_violation(__c);144_ERROR_IN_STL_CONTAINER::__max_size_function_requirement_violation(__c);145_ERROR_IN_STL_CONTAINER::__empty_function_requirement_violation(__c);146_ERROR_IN_STL_CONTAINER::__swap_function_requirement_violation(__c);147// Requirements on Iterators148typedef typename _Container::iterator iter;149typedef typename _Container::const_iterator const_iter;150_InputIterator_concept_specification<const_iter>::_InputIterator_requirement_violation(const_iter());151_InputIterator_concept_specification<iter>::_InputIterator_requirement_violation(iter());152}153};154155template <class _ForwardContainer>156struct _ForwardContainer_concept_specification {157static void158_ForwardContainer_requirement_violation(_ForwardContainer __c) {159// Refinement of Container160_Container_concept_specification<_ForwardContainer>::_Container_requirement_violation(__c);161// Requirements on Iterators162typedef typename _ForwardContainer::iterator iter;163typedef typename _ForwardContainer::const_iterator const_iter;164_ForwardIterator_concept_specification<const_iter>::_ForwardIterator_requirement_violation(const_iter());165_Mutable_ForwardIterator_concept_specification<iter>::_Mutable_ForwardIterator_requirement_violation(iter());166}167};168169170__STL_TYPEDEF_REQUIREMENT(reverse_iterator);171__STL_TYPEDEF_REQUIREMENT(const_reverse_iterator);172173template <class _ReversibleContainer>174struct _ReversibleContainer_concept_specification {175static void176_ReversibleContainer_requirement_violation(_ReversibleContainer __c) {177// Refinement of ForwardContainer178_ForwardContainer_concept_specification<_ReversibleContainer>::_ForwardContainer_requirement_violation(__c);179// Associated types180__reverse_iterator__typedef_requirement_violation<_ReversibleContainer>();181__const_reverse_iterator__typedef_requirement_violation<_ReversibleContainer>();182// Valid Expressions183_ERROR_IN_STL_CONTAINER::__const_rbegin_iterator_accessor_requirement_violation(__c);184_ERROR_IN_STL_CONTAINER::__const_rend_iterator_accessor_requirement_violation(__c);185_ERROR_IN_STL_CONTAINER::__rbegin_iterator_accessor_requirement_violation(__c);186_ERROR_IN_STL_CONTAINER::__rend_iterator_accessor_requirement_violation(__c);187// Requirements on Iterators188typedef typename _ReversibleContainer::iterator iter;189typedef typename _ReversibleContainer::const_iterator const_iter;190_BidirectionalIterator_concept_specification<const_iter>::_BidirectionalIterator_requirement_violation(const_iter());191_Mutable_BidirectionalIterator_concept_specification<iter>::_Mutable_BidirectionalIterator_requirement_violation(iter());192}193};194195template <class _ReversibleContainer>196struct _const_ReversibleContainer_concept_specification {197static void198_const_ReversibleContainer_requirement_violation(_ReversibleContainer __c) {199// Refinement of Container (JGS, not ForwardContainer)200_Container_concept_specification<_ReversibleContainer>::_Container_requirement_violation(__c);201// Associated types202__reverse_iterator__typedef_requirement_violation<_ReversibleContainer>();203__const_reverse_iterator__typedef_requirement_violation<_ReversibleContainer>();204// Valid Expressions205_ERROR_IN_STL_CONTAINER::__const_rbegin_iterator_accessor_requirement_violation(__c);206_ERROR_IN_STL_CONTAINER::__const_rend_iterator_accessor_requirement_violation(__c);207_ERROR_IN_STL_CONTAINER::__rbegin_iterator_accessor_requirement_violation(__c);208_ERROR_IN_STL_CONTAINER::__rend_iterator_accessor_requirement_violation(__c);209// Requirements on Iterators210typedef typename _ReversibleContainer::iterator iter;211typedef typename _ReversibleContainer::const_iterator const_iter;212213// This line won't compile on gcc 2.91 due to a compiler bug.214#if !(__GNUC__ == 2 && __GNUC_MINOR__ == 91)215__BidirectionalIterator_concept_specification<const_iter>::_BidirectionalIterator_requirement_violation(const_iter());216#endif217}218};219220221template <class _RandomAccessContainer>222struct _RandomAccessContainer_concept_specification {223static void224_RandomAccessContainer_requirement_violation(_RandomAccessContainer __c) {225// Refinement of ReversibleContainer226_ReversibleContainer_concept_specification<_RandomAccessContainer>::_ReversibleContainer_requirement_violation(__c);227// Valid Expressions228typedef typename _RandomAccessContainer::value_type __T;229typedef typename _RandomAccessContainer::difference_type _Dist;230typedef typename _Mutable_trait<__T>::_Type Type;231typedef Type* _TypePtr;232typedef typename _Mutable_trait<_Dist>::_Type Dist;233_STL_ERROR::__element_access_operator_requirement_violation(__c,234_TypePtr(),235Dist());236// Requirements on Iterators237typedef typename _RandomAccessContainer::iterator iter;238typedef typename _RandomAccessContainer::const_iterator const_iter;239_RandomAccessIterator_concept_specification<const_iter>::_RandomAccessIterator_requirement_violation(const_iter());240_Mutable_RandomAccessIterator_concept_specification<iter>::_Mutable_RandomAccessIterator_requirement_violation(iter());241}242};243244#endif /* if __STL_USE_CONCEPT_CHECKS */245246#endif /* __STL_CONTAINER_CONCEPTS_H */247248249