Commit 4365230
authored
Gci paper (#123)
* Add GCI update strategy with all Q1-Q8 decisions resolved
Strategy document for updating D3130 Container Interface paper to match
graph-v3 implementation. All 8 open questions resolved:
- Q1: Hybrid exposition-only convention for descriptors
- Q2: Pass descriptors by value (full audit of 17 occurrences)
- Q3: Drop trait gate on edge<G,E>, no edge_list descriptors/views
- Q4: Keep adjacency matrix traits/concepts
- Q5: raw_vertex_id_t exposition-only, vertex_id_store_t normative
- Q6: Separate namespaces (std::graph::edge_list)
- Q7: vertex_property_map in GCI (D3130)
- Q8: source_id mandatory for descriptor-based edges
* Phase A: Rewrite D3130 source files to match graph-v3
- Delete concepts_edges_before.hpp and concepts_basic_adj_list.hpp
- Rewrite concepts_edges.hpp: single edge<G,E> concept (no trait gate, Q3)
- Rewrite concepts_target_edge_range.hpp: out_edge_range + in_edge_range
- Rewrite concepts_vertex_range.hpp: vertex<G,V>, vertex_range, index_vertex_range, mapped_vertex_range
- Rewrite concepts_adj_list.hpp: adjacency_list, bidirectional, index, mapped variants
- Rewrite descriptor.hpp: vertex_descriptor + edge_descriptor (exposition-only internals, Q1)
- Rewrite descriptor_view.hpp: vertex_descriptor_view + edge_descriptor_view
- Rewrite edgelist_concepts.hpp: 2-arg concepts in std::graph::edge_list namespace
- Rewrite edgelist_types.hpp: 2-arg type aliases, add raw_vertex_id_t, remove edge_reference_t
- Add descriptor_traits.hpp: is_vertex_descriptor, is_edge_descriptor, is_descriptor
- Update container_interface.tex: add lstinputlisting for descriptor.hpp and descriptor_traits.hpp
- Add gci_update_plan.md implementation plan
* Phase B: Update type alias and traits tables
- Traits table: update has_contains_edge to <G,V>, remove unordered/ordered edge
traits, add bidirectional query traits (has_in_degree, has_find_in_edge,
has_contains_in_edge), add compound traits (has_basic_queries, has_full_queries),
note adjacency_matrix not yet in reference implementation
- Type alias table: already updated in Phase A amend (remove graph/vertex/edge
_reference_t, add vertex_id_store_t, raw-vertex-id-type, out_edge_*/in_edge_*
types, backward-compat aliases)
* Update phase overview with completion status
* Phase C: Update function tables and CPO names
- Graph table: rename has_edge(g)->has_edges(g), update default impl to use out_edges
- Vertex table: rename edges->out_edges, degree->out_degree; add in_edges, in_degree;
note backward-compat aliases (edges, degree); update vertex_edge_range_t->out_edge_range_t
- Edge table: rename find_vertex_edge->find_out_edge, contains_edge->contains_out_edge;
make source_id mandatory for descriptor-based edges (not optional); remove optional
source_id separator; add find_in_edge, contains_in_edge rows; note backward-compat aliases
- Edgelist table: 1-arg->2-arg CPOs (target_id(e)->target_id(el,uv), etc.);
update contains_edge lambda to use 2-arg forms; rename has_edge->has_edges
- Update prose references: edges(g,u)->out_edges(g,u), source_id(e)->source_id(el,uv), etc.
- Fix LaTeX errors from Phase B: \textit inside \tcode, vertex_t<G>{} braces
* Mark Phase C complete in plan
* Phase D: Rewrite concept sections
- Concepts intro: remove 'sourced' qualifier, add 'mapped' and 'bidirectional'
- Edge Concepts: single edge<G,E> concept; explain removal of targeted/sourced split;
simplify return-type rationale; keep precedent note about sized_range
- Edge Range Concepts: explain out_edge_range + in_edge_range semantics
- Vertex Concepts: describe vertex<G,V>, index_vertex_range, mapped_vertex_range
- Adjacency List Concepts: list all 6 concepts and their axes; explain removal
of basic_*/sourced_* variants due to descriptor design
- Edgelist Concepts: explain 2-arg form and three concept levels
* Mark Phase D complete in plan
* Phase E: Rewrite descriptor section with motivation and split architecture
- Add 'Why Descriptors?' motivation with comparison table (raw iterators vs descriptors)
- Add implicit vertex support explanation (index-based descriptors work without
materialised vertex storage)
- Add automatic pattern recognition paragraph (random-access, associative, edge patterns)
- Replace old monolithic descriptor prose with split architecture description:
vertex_descriptor<VertexIter> and edge_descriptor<EdgeIter,VertexIter,EdgeDirection>
- Fix inner_value() -> underlying_value(c) / inner_value(c) (container parameter required)
- Add pass-by-value convention paragraph (descriptors trivially copyable, const& only
in requires clauses)
- Remove stale itemize list of descriptor properties (now covered in prose)
- Keep all three lstinputlisting calls: descriptor.hpp, descriptor_traits.hpp,
descriptor_view.hpp
* Phase F: Update edgelist section — namespace, types table, edge_data patterns
- Remove \phil note from Namespace subsection
- Fix intro prose CPO args: source_id(el,e) -> source_id(el,uv) etc.
- Types table: remove edge_reference_t<EL>; add raw-vertex-id-type (exposition-only);
update vertex_id_t definition to use source_id(el,uv) (consistent with edgelist_types.hpp)
- Pattern section: rename edge_info -> edge_data throughout (4 occurrences)
- Pattern section: add pair<integral,integral> pattern
- Pattern section: add edge_data reference variants:
edge_data<VId,true,E&,void> and edge_data<VId,true,E&,EV>
* Phase G: Add data structs, value function concepts, vertex property map
- Add vertex_data/edge_data/neighbor_data struct families with specialization tables
- Add copyable_vertex_t/copyable_edge_t/copyable_neighbor_t helper alias table
- Add Value Function Concepts subsection: vertex_value_function, edge_value_function
- Add Vertex Property Map subsection: vertex_property_map<G,T> type alias,
make_vertex_property_map (eager+lazy), vertex_property_map_contains,
vertex_property_map_get
- Fix: use L{8cm} column spec in copyable_types table (arydshln requires at least one L column)
- Fix: remove texcl-interpreted comment from vertex_property_map lstlisting
* Phase H: Establish graph::adj_list and graph::edge_list as peer namespaces
- GCI intro: introduce both namespaces by name; explain that adj_list is re-exported
to graph:: but edge_list is not (vertex_id_t conflict)
- Adjacency List Interface: add Namespace subsection explaining graph::adj_list,
re-export to graph::, and when to use the qualified form
- Edgelist Interface: expand Namespace subsection to explain the peer relationship,
contrast the two ADTs, and note the shared CPOs (source_id, target_id, edge_value)
* Phase H: Prose audit and revision history
- Traits table: fix has_degree comment degree->out_degree, has_find_vertex_edge
comment find_vertex_edge->find_out_edge, has_contains_edge comment
contains_edge->contains_out_edge (adj_list CPO names)
- Partition section: edges(g,uid,pid)/edges(g,u,pid) -> out_edges(g,uid,pid)/
out_edges(g,u,pid)
- Revision history: add r4 entry summarising all descriptor, concept, CPO,
type alias, data struct, namespace and edgelist changes from Phases A-H
* Phase J: Cross-paper fixups for algorithms and shared spec text
- tex/conventions.tex: vertex_reference_t<G> -> vertex_t<G> (descriptor row);
edge_reference_t<G> -> edge_t<G> (edge descriptor row);
vertex_info -> vertex_data (VProj description);
edge_info -> edge_data (EProj description)
- tex/specification.tex: vertex_reference_t<G> -> vertex_t<G> in
vertex_value(), has_degree, has_find_vertex_edge, adjacency_list,
incidence(), neighbors() (6 occurrences)
- D3128_Algorithms/tex/algorithms.tex: edge_reference_t<G> -> edge_t<G>
in basic_edge_weight_function and edge_weight_function concepts (2 occurrences)
- D3128_Algorithms and D3130_Container_Interface both build cleanly
* Update gci_update_plan and conventions.tex1 parent 020d77e commit 4365230
18 files changed
Lines changed: 2453 additions & 405 deletions
File tree
- D3128_Algorithms/tex
- D3130_Container_Interface
- src
- tex
- agents
- tex
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
148 | 148 | | |
149 | 149 | | |
150 | 150 | | |
151 | | - | |
| 151 | + | |
152 | 152 | | |
153 | 153 | | |
154 | 154 | | |
155 | 155 | | |
156 | | - | |
| 156 | + | |
157 | 157 | | |
158 | 158 | | |
159 | 159 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
7 | 12 | | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
12 | 25 | | |
13 | 26 | | |
14 | | - | |
15 | | - | |
16 | | - | |
| 27 | + | |
| 28 | + | |
17 | 29 | | |
18 | 30 | | |
19 | | - | |
20 | | - | |
21 | | - | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
Lines changed: 0 additions & 21 deletions
This file was deleted.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
This file was deleted.
Lines changed: 7 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
4 | | - | |
5 | | - | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
6 | 13 | | |
7 | | - | |
8 | | - | |
9 | | - | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
10 | 21 | | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | | - | |
3 | | - | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
37 | | - | |
38 | | - | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
43 | | - | |
44 | | - | |
45 | | - | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
50 | 8 | | |
51 | | - | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
52 | 18 | | |
53 | | - | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
54 | 22 | | |
55 | | - | |
56 | | - | |
| 23 | + | |
| 24 | + | |
57 | 25 | | |
58 | | - | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
59 | 46 | | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
76 | | - | |
77 | | - | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | | - | |
82 | | - | |
83 | | - | |
84 | | - | |
85 | | - | |
86 | | - | |
87 | | - | |
88 | | - | |
89 | | - | |
90 | | - | |
91 | | - | |
92 | | - | |
93 | | - | |
94 | | - | |
95 | | - | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | | - | |
102 | | - | |
103 | | - | |
104 | | - | |
105 | | - | |
106 | | - | |
107 | | - | |
108 | | - | |
109 | | - | |
110 | | - | |
111 | | - | |
112 | | - | |
113 | | - | |
114 | | - | |
115 | | - | |
116 | | - | |
117 | | - | |
118 | | - | |
119 | | - | |
120 | | - | |
121 | | - | |
122 | | - | |
123 | | - | |
124 | | - | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
125 | 77 | | |
126 | 78 | | |
127 | | - | |
128 | | - | |
| 79 | + | |
| 80 | + | |
129 | 81 | | |
0 commit comments