This lecture is devoted to testing graph properties in the general graph model, where graphs are inspected via incidence and adjacency queries, and distances between graphs are normalized by their actual size (i.e., actual number of edges). The highlights of this lecture include:Teaching note: Again, we recommend covering only part of the material in class, and leaving the rest for optional independent reading. Aside from Section 1, which seems a must, the choice of what to teach and what to leave out is less clear. If pressed for our own choice, then the fact is that we chose to cover Sections 2.2 and 3.2.1. The general graph model is intended to capture arbitrary graphs, which may be neither dense nor of bounded-degree. Such graphs occur most naturally in many settings, but they are not captured (or not captured well) by the models presented in the last two lectures (i.e., the dense graph model and the bounded-degree graph model).Recall that both in the dense graph model and in the bounded-degree graph model, the query types (i.e., ways of probing the tested graph) and the distance measure (i.e., distance between graphs) were linked to the representation of graphs as functions. In contrast to these two models, in the general graph model the representation is blurred, and the query types and distance measure are decoupled.Giving up on the representation as a yardstick for the relative distance between graphs, leaves us with no absolute point of reference. Instead, we just define the relative distance between graphs in relation to the actual number of edges in these graphs; specifically, the relative distance between the graphs G = ([k], E) and G ′ = ([k], E ′ ) may be defined asdenotes the symmetric difference between E and E ′ . Indeed, the normalization by max(|E|, |E ′ |) is somewhat arbitrary, and alternatives that seem as natural include |E| + |E ′ |, |E ∪ E ′ | and (|E| + |E ′ |)/2; yet, all these alternatives are within a factor of two from one another (and the slackness is even smaller in the typical case where |E ∪ E ′ | ≈ |E ∩ E ′ |).Turning to the question of query types, we again need to make a choice, which is now free from representational considerations. The most natural choice is to allow both incidence queries and adjacency queries; that is, we allow the two types of queries that were each allowed in one of the two previous models. Hence, the graph G = ([k], E) is (redundantly) represented by (or rather accessed via) two functions:1. An incidence function g 1 : [k] × [k − 1] → {0, 1, ..., k} such that g 1 (u, i) = 0 if u has less than i neighbors and g 1 (Indeed, here k − 1 serves as a (trivial) degree bound. (Recall that the bounded-degree graph model relied on an explicit degree bound, which was denoted d.)2. An adjacency predicate g 2 : [k] × [k] → {0, 1} such that g 2 (u, v) = 1 if and only if {u, v} ∈ E.Typically, adjacency queries become more useful when the graph becomes more dense, whereas incidence queries (a.k.a neighbor queries) become more useful when the graph becomes more sparse (c...