EPA/600/A-92/197 AIR TOXICS: THE RESEARCH CHALLENGE OF THE 1990 CLEAN AIR ACT AMENDMENTS FRANK T. PRINCIOTTA AND DOUGLAS G. McKINNEY AIR AND ENERGY ENGINEERING RESEARCH LABORATORY U.S. ENVIRONMENTAL PROTECTION AGENCY Toxic emissions from stationary air pollution sources have been recognized as a national health problem for several decades. Unfortunately, a large percentage of these hazardous air pollutant (HAP) emissions have not been controlled because between 1977 and 1990 the risk- based Federal regulatory program to reduce them only addressed a few pollutants. Disputes between industry, the U.S. Environmental Protection Agency (U.S. EPA), and environmental groups over health effects data, exposure levels, and what constitutes an ample margin of safety to protect the public health were the primary impediments to progress and limited the number of National Emission Standards for Hazardous Air Pollutants (NESHAPS) issued to only ten. The lack of progress toward reducing HAP emissions raised public concern and convinced Congress to design a new regulatory approach which would avoid the past impediments and accelerate emission reductions. The purpose of this paper is to describe the major provisions of Title III of the 1990 Clean Air Act Amendments (CAAA) which formally established this modified approach and the research which the U.S. EPA has initiated to support state and Federal regulatory officials implement the extensive new provisions. MAJOR TITLE HI PROVISIONS Prior to the passage of the 1990 CAAA, all Federal regulations to reduce HAP emissions were chemical specific, with emission levels set based on a specific risk level. This strategy was substantially changed when Congress modified section 112 (now Title III) of the Clean Air Act to establish a two-phased approach for regulating HAPs. The first phase requires national technology-based standards for new and existing stationary sources which emit one or more of the 189 HAPs listed under section 112 (b)(1). Emission levels promulgated for each specific category or subcategory of sources will be based on the emission reduction capability of the Maximum Achievable Control Technology (MACT) available. Once all the technology-based standards are completed (ten years), the second phase of the program will be initiated. This latter phase will determine if additional standards are necessary for a given source category or subcategory to protect human health and the environment from residual risks caused by any remaining emissions. The two-phased approach should accelerate HAP emission reductions because the initial phase will reduce the majority of the risks without the need for contentious risk assessments. In addition to the two-phased regulatory strategy, Title HI includes a variety of special studies which will generate data to support future national air toxics policies. These studies require the U.S. EPA to either further characterize air toxic problems or improve the methods and techniques used to define air toxic risks. Several of the most significant required studies are described below. ------- o Area Source Program: The purpose of this program is to reduce 75% of the cancer incidence resulting from area sources (defined as stationary sources which emit less than 10 tons of a single HAP or 25 tons of a combination of HAPs) of hazardous air pollutants in urban areas. The study requires the U.S. EPA to initiate an urban toxics research program and to produce a Comprehensive National Strategy which must identify the 30 pollutants that pose the greatest threat to public health and ensure 90% of the area sources which emit these pollutants are subject to standards. The strategy developed must be provided to Congress by November 1995. o Great Waters: The purpose of this study is to identify and assess the extent of atmospheric deposition of hazardous air pollutants to the Great Lakes, the Chesapeake Bay, Lake Champlain, and coastal waters. Within five years, the Administrator must determine whether further emission standards (beyond those required under other portions of sec. 112) are needed to prevent serious adverse effects to any of the Great Lakes or coastal waters. o Coke Oven Production Technology: Requires DOE and EPA to jointly undertake a 6 year study to assess coke oven production emission control technologies and assist in the development and commercialization of technically practical and economically viable control technologies which have the potential to significantly reduce emissions of hazardous air pollutants from coke oven production facilities. o Electric Utilities: This study requires the Administrator to report to Congress by November 1993 on hazards to public health due to emissions of hazardous air pollutants from utilities and to develop standards for utilities if he concludes they are necessary based on the results of the study. In addition, a special assessment of mercury emissions from utilities including possible control options is due by November 1994. o NAS Risk Assessment: EPA is required to make arrangements with the National Academy of Sciences to conduct a review of the risk assessment methodology EPA uses to determine carcinogenic risks associated with exposure to hazardous air pollutants and to discuss possible improvements in the methodology. A report is due by May 1993. Based on the results of these studies, the U.S. EPA may promulgate additional emission standards to protect specific geographic areas such as the Great Lakes or to include sources such as utility boilers which are not currently subject to any Title III regulations. 2 ------- RESEARCH STRATEGY The data needed to support this new two-phased regulatory approach is extensive because of the large number of pollutants and source categories subject to regulation. The U.S. EPA's Office of Research and Development (ORD) has recognized the challenge of this new regulatory strategy and has modified its existing research program to provide the critical data and methods needed. Development of detailed chemical-specific risk assessments emphasized since the late 1970's has been replaced by a broader research program which focuses on providing the data needed to regulate specific source categories. The new strategy will initially focus on developing information to support the phase-one MACT standards and special studies. In future years, emphasis will shift towards developing advanced risk assessment methods and other data needed to support residual risk determinations. Based on this fundamental change in research emphasis, the new goals of the Federal HAP research program are to: o support the technology-based standards by developing source test methods which will be used to determine compliance with MACT standards and by evaluating existing and innovative control technologies and pollution prevention approaches applicable to source categories subject to MACT standards; o characterize sources of air toxics and determine exposure levels and risks associated with those air toxic sources where little or no information is available. Much of this assessment work is currently aimed at supporting the large number of special studies in Title 111 (Area sources; Great Waters); o provide data to support residual risk determinations. Research in the following six major areas has been redirected to support these broad goals: source test methods, emissions data and emission reduction approaches, ambient monitoring, exposure assessment, health studies and assessments, and technology transfer. These research areas were chosen for emphasis based on near-term data needs identified by the U.S. EPA's Office of Air Quality Planning and Standards (OAQPS) and an independent evaluation by ORD scientific staff of the research needed to respond to future HAP problems such as residual risk. Figure 1 provides a summary of how each research area supports the new Title III provisions. 3 ------- FIGURE 1 - RELATION OF RESEARCH AREAS TO KEY TITLE HI PROVISIONS RESEARCH AREAS Source Test Methods Emissions Data and Emission Reduction Approaches Ambient Monitoring Exposure Assessment Health Studies and Assessments KEY TITLE HI PROVISIONS MACT Standards Special Studies Residual Risk XXX X X X X X X X Technology Transfer X X RESEARCH DESCRIPTIONS BY AREA SOURCE TEST METHODS: Currently there are no established methods for measuring emissions of specific HAPs from many of the source categories for which the U.S. EPA will develop MACT standards over the next ten years. ORD is responding to this need by developing measurement methods for the list of 189 air toxics to support compliance with MACT and any future standards. The program is designed to have stationary source test methods available for a relatively large number of pollutants in the shortest time and at the least cost through development of screening methods and generic methods which identify and quantify a number of different pollutants. However, for those substances that have unique chemical properties, specific test methods will need to be developed. EMISSIONS DATA AND EMISSION REDUCTION APPROACHES; This research area includes efforts to develop and evaluate data on HAP emissions, control technologies and pollution prevention approaches. The emissions data research is focused on developing and improving area source emission estimation methods and providing emission inventories for 3-5 urban areas to support the Area Source Program. Emissions data is also being generated to support the periodic assessments of deposition to the Great Lakes and coastal waters. The emission reduction research includes: 1) developing innovative control processes and pollution prevention approaches for source categories where existing technologies 4 ------- are either not available or not cost-effective; 2) providing guidance on proper engineering practices to ensure that existing technologies which will be used as the basis for many MACT standards perform to their expected design efficiencies in the field; and 3) conducting engineering studies to demonstrate how existing control and prevention approaches which have only been used in a limited number of applications can be applied to other sources to reduce HAP emissions. Initial emphasis will be placed on approaches which could be used to comply with the phase one technology-based standards. AMBIENT MONITORING: The goal of this research is to develop and evaluate, both in the laboratory and under field conditions, methods for sampling and analysis of ambient air pollutants. There are no satisfactory ambient methods for more than half of the HAPs listed under Title HI. These methods are needed to identify and quantify HAPs which pose risks in urban air and to major lakes and coastal waters and to monitor the progress of the overall air toxics regulatory program. In addition, the ambient data will be used in the future to support residual risk determinations by providing information on how the phase-one MACT standards have impacted ambient air toxic concentrations. Initially efforts are focused on monitoring a wide variety of air toxics in 5-8 urban areas. This monitoring data directly supports the Area Source Program which requires monitoring in a representative number of urban locations to characterize risks from area sources. EXPOSURE ASSESSMENT: The ORD program is developing data on the atmospheric lifetime and fate of air toxic chemicals. Such information will also be generated for selected non-toxic substances that react to form potentially toxic products. The Agency requires data on air toxics to estimate human and ecological exposures to those compounds and to help devise strategies to eliminate or limit exposures. Research is also underway to identify and quantify the contributions of specific sources of air toxics to ambient concentrations. Source signature data will be gathered to reconcile emissions and ambient concentration data. The exposure assessment work directly supports the Area Source Program which requires consideration of atmospheric transformation and other factors which can elevate public health risks from such pollutants. In addition, the data on exposure will be critical to making residual risk decisions. HEALTH STUDIES/ASSESSMENTS: In the health effects area, ORD is evaluating the nature and magnitude of non-cancer health effects associated with exposure to toxic air pollutants including developing methods to quantify developmental and reproductive toxicity of chemicals emitted to the air by point and area sources. Other health research is also planned to assess the neurotoxicity of the 189 HAPs in animals and humans; to identify which air toxics are liver toxicants; and to improve cancer risk extrapolation for air toxics through biologically based dose-response modeling. The assessments portion of this research area will provide non-cancer and cancer health risk 5 ------- assessments on air toxics in support of regulatory activities. The major activities are to develop chronic Reference Concentrations known as RfCs (defined as an air concentration for a chemical which is anticipated to pose little or no public health risks) for Title III compounds and to develop acute non-cancer assessments of the 189 listed air toxics. The health research will support many of the special studies required under Title III including the area source program which requires EPA to identify the 30 (or more) air toxics that pose the greatest threat to public health and will provide the foundation for future residual risk assessments after MACT has been applied to point sources. TECHNOLOGY TRANSFER The technology transfer program will provide technical assistance on a variety of HAP issues ranging from control technology performance to health risk assessments. The information will be provided to users through three technical centers currently in full operation. The type of assistance each center provides is described below. o The Control Technology Center (CTC) provides technical assistance to state and local air pollution control agencies on matters relating to air pollution control technology. A hotline is used to provide quick responses to telephone requests for assistance. In addition, more in-depth studies are initiated to respond to specific state or local requests for assistance which can not be answered without initiating a formal study. Results from these longer-term assistance projects are issued as technical guidance through publication of technical reports, development of personal computer software, and workshops on control technology matters. o Air Risk Information Support Center (Air RISC) - Provides scientific assessment assistance to states, Regions, and local agencies on air toxics health risk issues. The types of guidance provided include: rapid response to health risk questions; 2) training in use of risk assessment guidelines; 3) development of cancer and non-cancer assessments; and review/consultation on state regulatory actions. o Emission Measurement Technical Information Center (EMTIC) - This center is designed to promote consistent and accurate application of emission test methods for development and enforcement of national, state, and local emission prevention and air pollution control programs. The center has gathered information on testing needs, held workshops, and sent test methods and quality assurance information to regional, state, and local agencies. CONCLUSION Title HI of the 1990 CAAA has substantially changed the process used to regulate HAPs and is expected to substantially decrease emissions over the next ten years as MACT standards are promulgated for hundreds of source categories and subcategories. However, the effectiveness of the program will depend heavily on the quality of scientific data used to develop 6 ------- and enforce each emission standard issued. The U.S. EPA's Office of Research and Development has redesigned its air toxics research program to ensure this scientific data is generated in time to meet mandated regulatory deadlines. The combination of near-term research to support MACT standards and special studies with longer-term research to support future residual risk determinations will ensure the challenging new regulatory approach is implemented with the best scientific information available. 7 ------- Ill nil II III [111 MflC PB96-150826 Information is our business. A TEMPORAL LOGIC FOR MULTI-LEVEL REASONING ABOUT HARDWARE DEPARTMENT OF COMPUTER SCIENCE STANFORD, CA DEC 82 U.S. DEPARTMENT OF COMMERCE National Technical Information Service ------- December 1982 Report No. STAN-CS-82-952 A Temporal Logic for Multi-Level Reasoning about Hardware % Ben Moszkowski Department of Computer Science Stanford University Stanford, CA 94305 ^IWlZtO REPRODUCED BY: NTS U.S. Department of Commerce National Technical Information Service Springfield, Virginia 22161 ------- BIBLIOGRAPHIC INFORMATION PB96-150826 Report Nos: STAN-CS-82-952 Title: Temporal Logic for Multi-Level Reasoning about Hardware. Date: Dec 82 Authors: B. Moszkowski. Performing Organization: Stanford Univ., CA. Dept. of Computer Science. Sponsoring Organization: *National Science Foundation, Washington, DC.*Defense Advanced Research Projects Agency, Arlington, VA.*Air Force Office of Scientific Research, Boiling AFB, DC. Contract Nos: DARPA-N00039-82^C-0250, NSF-MCS79-09495, NSF-MCS81-11586, AFOSR-81-0014 Supplemental Notes: Presented at the IFIP International Conference on Computer Hardware Description Languages and Their Applications (6th), Pittsburgh, PA., May 1983. NTIS Field/Group Codes: 62E (Information Theory), 62A (Computer Hardware), 62B (Computer Software) Price: PC A03/MF A01 Availability: Available from the National Technical Information Service. Springfield, VA. 22161 Number of Pages: 26p Keywords: *Mathematical logic. *Logic design. Learning machines. Artificial intel hgence. Computer systems programs. Computer systems hardware, ^Temporal logic, *Multi-level reasoning. Abstract: The paper describes a logical notation for reasoning about digital circuits. I he formalism provides a rigorous and natural basis for device specification as well as for proving properties such as correctness of implementation. Conceptual levels of circuit operation ranging from detailed quantitative timing and signal propagation up to functional behavior are integrated in a unified way. A temporal predicate calculus serves as the formal core of the notation, resulting in a versatile tool that has more descriptive power than any conventional hardware specification language. The logic has been applied to specifying and proving numerous properties of circuits ranging from delay elements up to the Am2901 ALU bit slice. Presentations of a delay model and a. multiplication circuit illustrate various features of the notation. ------- A Temporal Logic for Multi-Level Reasoning about Hardware Ben Moszkowski Department of Computer Science Stanford University Stanford, California 94305 Abstract This paper describes a logical notation for reasoning about digital circuits. The formalism provides a rigorous and natural basis for device specification as well as for proving properties such as correctness of implementation. Conceptual levels of circuit operation ranging from detailed quantitative timing and signal propagation up to functional behavior are integrated in a unified way. A temporal predicate calculus serves as the formal core of the notation, result- ing in a versatile tool that has more descriptive power than any conventional hardware specification language. The logic has been applied to specifying and prov- ing numerous properties of circuits ranging from delay elements up to the Am2901 ALU bit slice. Presentations of a delay model and a multiplication circuit illustrate various features of the notation. The work presented here was supported in part by the National Science Foundation under a Graduate Fellowship, Gravis MCS79-09Jt95 and MCS81-11586, by DARPA under Contract N00039-82-C-0250, and by the United States Air Force Office of Scientific Research under Grant AFOSR-81-0014• This paper is part of the author's Ph.D. dissertation under the supervision of Professor Zohar Manna and will appear in the IFIP Sixth International Conference on Computer Hardware Description Languages and Their Applications, Pittsburgh, Pennsylvania, May, 1983. 1 ------- §1 Introduction Computer systems continue to grow in complexity and the distinctions between hardware and software keep on blurring. Out of this has come an increasing awareness of the need for behavioral models suited for specifying and reasoning about both digital devices and programs. Contemporary hardware description languages (for example [1,15,19]) are not sufficient because of various conceptual limitations: • Most such tools are intended much more for simulation than for math- ematically sound reasoning about digital systems. Many compromises are made so that the descriptions can be executed. • Difficulties arise in developing circuit specifications that out of necessity must refer to different levels of behavioral abstraction. • What formal tools there are for such languages cannot in general deal with the inherent parallelism and nondeterminism of circuits. The formalism presented in this paper overcomes these problems and unifies in a single notation digital circuit behavior that is generally described by means of the following techniques: • Register transfer operations • Flowgraphs and transition tables • Tables of functions • Timing diagrams • Schematics and block diagrams The notation is based on discrete time intervals and combines aspects of stan- dard temporal logics (12,17] with features of dynamic logic [7]. Halpern et al. [6] shows that useful subsets pf the logic are decidable and of relatively reason- able computational complexity. This indicates that partial automation of reason- ing may be practical. The formalism's applicability is by no means limited to the goals of computer-assisted verification and synthesis of circuits. This type of notation, with appropriate "syntactic sugar," could provide a fundamental and rigorous basis for communicating, reasoning or teaching about digital concepts and devices. Simulation-based languages could for example use such a logic as a vehicle for describing the intended semantics of delays and other features. Thus, semi- automated correctness checking is really only one part of a much bigger picture. 2 ------- Before outlining the formalism, the paper discusses related work. The temporal logic is then informally introduced by way of sample properties. Following this, the formalism serves as a basis for specifying and reasoning about various aspects of a simple delay element as well as of a hardware multiplication circuit. Quantitative timing as well as algorithm development are discussed. §2 Related Work Gordon's work [4] on register-transfer systems uses a denotational semantics to provide a concise means for reasoning about clocking, feedback, instruction-set im- plementation and bus communication. No quantitative timing properties are con- sidered and the notation has some difficulties in describing operations occurring over multiple cycles. Wagner [20] presents a semi-automated proof development system for reasoning about signal transitions and register transfer behavior. Unfortunately the notation suffers from a lack of formality that is difficult to remedy. Malachi and Owicki [11] utilize a temporal logic to model self-timed digital systems by giving a set of axioms. No indication is included on how to generalize the work to the entire domain of digital circuits. The work of Bochmann [2] describes and verifies properties of an arbiter, a device for regulating access to shared resources. The presentation, by means of a temporal logic, reveals some tricky aspects in reasoning about such components although the concepts used are not as rigorously developed as they may appear to be and do not easily generalize. As in the previous works, no quantitative timing issues are examined. Leinwand and Lamdan [9] use a type of Boolean algebra to model signal tran- sitions. Applications include systems with feedback and critical timing constraints. The use of the notation for non-trivial examples is very unintuitive. Patterson [16] explores the verification of firmware. This work views the problem from the sequen- tial programming standpoint without describing the underlying digital circuitry and related issues of concurrency and timing. There is also work by Meinen [13] on register transfer behavior and McWilliams [10] on worst-case time constraints. Eveking [3] uses predicate calculus with an explicit time variable to explore verification in the Conlan language. Although such an approach can in principle describe circuits, the proliferation of variables representing explicit time points becomes a major hindrance from a practical as well as theoretical standpoint. Many high-level temporal concepts become easily obscured amid all the notation. A number of people have used temporal logics to describe computer communica- tion protocols [5,8,18]. However, the precise connections between protocols and 3 ------- the underlying hardware and software are still rather unclear as are the relative advantages of the different techniques employed. §3 Notational Preliminaries Before the logic is introduced, it is necessary to say a little about the kinds of mathematical entities used here for modelling digital signals. Data Values Values are limited to natural numbers, X (read "bottom"), and finite-length vectors constructed using these elements. Both 0 and 1 as well as _L serve as bits, with 0 standing for low voltage, 1 for high voltage and _L representing voltages that are out of range. Finite-length vectors can be formed containing natural numbers and X. The following are sample values: 0, 3, X, (0), (1,2), (), (J-,1,1) Bit Operations Four basic operations defined on bits are complement (©), and (©), or (©) and exclusive-or (®). The symbols ©, © and © are used instead of -1, a and v in order to distinguish notationally between bit expressions and formulas in the underlying predicate calculus. Here are corresponding truth tables extended to include X: © © 0 1 X © 0 1 X © 0 1 X 0 1 0 0 0 0 0 0 1 X 0 0 1 X 1 0 1 0 1 X 1 1 1 1 1 1 0 X X X X 0 X X X X 1 X X X X X §4 Informal Overview of Temporal Operators The temporal logic provides a basis for describing periods of time such as in timing diagrams. Concepts such as signal response and oscillation are readily ------- expressible. Examples serve to introduce the various operators used later in this paper. This presentation has been kept rather informal although the entire logic is explored in detail in Halpern et al. [6] and Moszkowski [14]. Time is modeled as being discrete and finite. The following figure is a typical timing diagram: X 1 • 0 10 20 30 40 50 units This represents the behavior of the signals X, Y and Z over a period of 50 units of time. The signal X goes up and down twice, while Y is stable with the value 1. Initially Z equals 0 for over 20 units, after which it equals _L. Notice that all times are relative. This approach is used because the properties to be examined depend solely on distances between points, independent of any absolute times. The group of signals can be modeled as a finite temporal interval a mapping variables and times to values. The behavior of intervals is concisely expressible by temporal formulas presented below. Given such a formula p, the construct a \= p means p is true for the interval a. The notation t= p signifies that the formula p is true of all intervals. Please keep in mind that all operators discussed can be expressed in terms of a small collection of fundamental notions. The properties shown are deducible from a basic set of logical rules. 4.1 Initial and Terminal Equality The formula beg(X = Y) is true for an interval a if within a the two signals X and Y have equal starting values. Similarly, the construct jln{X — Y) is true for an interval a if X and Y end up equal in a. Examples for a given interval o: Concept Formula X and Y start equal and end complements o t= [beg(X = Y) a fin(X = 07)] X ends equal to 1 and Y ends equal to 0 a h/m(X = 1 a Y = 0) 5 ------- Properties that are true for all intervals: *= - fin(X = Y) = = Y)) The signals X and Y do not end equal if and only if they end up not equal. t= fin((X 0Y) = 1) 3 fin(X = 1 a Y = 1) If the bit-and of X and Y ends up equaling 1, both X and Y end up equal to 1. 4.2 Temporal Equality Two signals X and Y are temporally equal in an interval a if they have the same values at all times. This is written X « Y and differs from the constructs for initial and terminal equality, which only examine signals' values at the extremes of the interval. Examples: Concept The signal X is 0 throughout the interval The bit-and of X and Y everywhere equals 0 X agrees everywhere with the complement of Y Formula ctnJwO <7N(x©y)^o BY Properties: N X as Y = f(X) « f(Y) If two signals are temporally equal, then any function applied to one of them temporally equals the same function applied to the other. l= X ^ 0 =5 X®Y «0 If X temporally equals 0, then the bit-and of it with another signal also equals 0 everywhere. t= (X,r> ^(0,1}e[X«0aF«1] The pair (X, Y) temporally equals (0,1} exactly if the signal X temporally equals 0 and Y temporally equals 1. 6 ------- 4.3 Temporal Stability A signal X is stable if it has a constant, defined value. The notation used is stbX. In the case of a bit signal, this means that the signal is always 0 or always 1, that is stbX = [I«OvI«l] Example: (this and further examples will omit the symbols "a n") Concept Formula The complement of X is stable stb © X Properties: N [I«l] = [stb X a beg(X = 1)] The signal X always equals 1 if and only if X is stable and initially equals 1. N= stb X = stb 0 X A bit signal is stable if and only if its complement is. [stbX a stbYJ o stb(X © Y) If two bit signals are stable, then so is their bit-or. The converse is not always true, N stb(X, Y) = [stbX a stbY) A pair is stable exactly if the two individual signals are. 4.4 Temporal Length Quantitative timing properties are handled by a special object len whose value for any interval a equals the length of a. Examples: Concept Formula The interval is at least m units in length len > m The signal X is stable and cr measures at least m units stb X a len > m The predicate empty is true exactly if the interval has length 0. The predicate skip is true if the interval has length exactly 1. Since time is discrete, this is the minimum nonzero width. ------- 4.5 Examining Subintervals For a formula p and interval a, the construct Bp is true if p is true in all subintervals of time contained within a including a itself. Note that the "a" in 0 simply stands for "all" and is not a variable. The formula <$> p is true if the formula p itself is true in at least one subinterval of a. Examples: Concept Formula In some subinterval of length > m + n, X is stable <$>([/en > m + n] a stb X) In all subintervals < m units, X is stable E([/en < m] 3 stb X) Properties: N Bp 3 p If a formula p is true in all subintervals then it is true in the primary interval. N <& p = -1 0 ~>p A formula is true in some subinterval if and only if the formula is not everywhere false. N B(p A q) = [0p A B?] The logical-and of two formulas p and q is true in every subinterval if and only if both formulas are true everywhere. >= p = <$><§> p A formula is somewhere true exactly if there is some subinterval in which the formula is somewhere true. [Bp a Of] => <8>(p a q) If p is true in all subintervals and q is true in some subinterval then both are simultaneously true in at least one. n [X^Y] = B(X = Y) Two signals are temporally equal in an interval exactly if they are equal in every subinterval. f= stbX 3 B stbX If X is stable in the overall interval, X is also stable in every subinterval. 8 • ------- 4.6 Initial Subintervals The operators 0] and are similar to 0 and <8> but only look at initial subintervals starting at time 0. Example: Concept " Formula X is initially stable for at least the first m units <3>(stbX a len > m) 4.7 Temporal Dependence It is useful to specify that a signal X remains stable as long as another signal Y does. X is said to depend on Y, written X depY. This can be expressed using the temporal formula XdepY = m(stbY 3 stbX) Examples: Concept Formula X and Y remain stable while Z does {X, Y) dep Z X remains stable as long as the pair (Y, Z) does X dep (Y, Z) Properties: (= [XdepY a stbY] ^ stbX If X depends on Y and Y is stable, then so is X. * (X dep Y a Y dep Z] 3 X dep Z Dependence is transitive. 1= beg{X = 0) 3 {X®Y)depX If X initially equals 0, then the bit-and of X and Y depends on X. 1= [X dep Z a Y dep Z] = (X, Y) dep Z The variables X and Y depend on Z exactly if the pair (X, Y) does. 9 ------- 4.8 Adjacent Subintervals Given a time interval, the formula p; q is true if there is at least one way to divide the interval into two adjacent subintervals a and a' such that the formula p is true in the first one, a, and the formula q is true in the second, a'. In particular, a rising signal can be described by the predicate |X: tX = [(X « 0); skip; (X « 1)] This says that X is 0 for a while and then jumps to 1. The gap of quantum length represented by the test skip is necessary here since a signal cannot be 0 and 1 at exactly the same instant. Falling signals are analogously described by the construct JX: |X = [(X « 1); skip; (X » 0)] Examples: Concept X is stable and Y goes up The bit-or of X and Y falls In every subinterval where X rises, Y falls X goes up and then back down Properties: n (TX a fY) => [!(X©y) a T(X©F)] If two bit signals rise, so do their bit-and and bit-or. n |X = T ©X A bit signal falls exactly if its complement rises. t= [TX a beg(Y = 0) a {Y dep X)] 3 T(X©Y) If X rises and in addition Y initially equals 0 and depends on X, then the bit-or of X and Y also rises. These operators can be extended to include quantitative information specifying minimum periods of stability before and after the transitions. For example, timing details can be added to the operator T: Tm'nX = [(X 0 a len > in); skip; (X « 1 a len > n)] Formula stbX a ]Y 1{X©Y) ~(TX 3 IY) TX; IX 10 ------- A negative pulse with quantitative information can be described as shown below: [(X ps 1 a /en > I); skip] (X ~0 a len > m); skip; (X 1 a len > n)] 4.9 Temporal Assignment . The formula X —~ Y is true for an interval if X's initial value equals Y's final value. Example: Concept Formula Z ends up with the complement of Y's initial value 07 —*¦ Z Properties: N stbX 3 (X->X) A stable signal's initial and final values agree. N [(X Y); (Y Z)\ 3 (X — Z) If Y gets X's value and then Z gets Y's, the net result is that Z gets X's initial value. n (0X -> Y) = (X^0Y) The bit signal Y gets the complement of X's value exactly if Y's complement gets the value of X itself. h [(©Z- Z); (0Z-> Z)] 3 (Z -> Z) If a signal is twice complemented, it ends up with its original value. 4.10 Repetition An interval can be broken up into an arbitrary number of successive subin- tervals, each satisfying some formula p. The construct pn has the same meaning 11 ------- as p; s. n times For the case of n = 0, an interval a satisfies the operator exactly if ct's length is 0. Examples: Concept Formula The signal Y twice goes up and down (|Y; jY)2 Z is complemented n times (© Z —~ Z)n Properties: ¥ (0J —~ X)n 3 [J©(nmod 2)- X] After a series of n complements, X ends up with the initial value of the exclusive-or of X and (n mod 2). For instance, if n is even, X ends up unchanged. 1= (pm)n = pmn If a formula p is repeated m times within a further repetition of n cycles, the net result is the same as iterating p a total of mn times. §5 Simple Delay Element Delay is of fundamental importance in digital systems. One of the simplest types of delay elements has the following structure: In- Out n-unit delay Here In is the input bit signal and Out is the associated output. The variable n is a fixed natural number indicating the time delay between a value appearing on the input and later on the output. The following statement uses intervals to characterize this behavior: In every subinterval of length exactly n units, the initial input value agrees with the final output one. 12 ------- The next predicate Delay captures the required interaction: Delay(In, Out, n) =def 0[(/en = n) (In —*¦ Out)] Properties: • A delay element is also a delay element in every subinterval: Delay(In, Out, n) 3 IB Delay (In, Out, n) • Zero delay is the same as temporal equality: t= Delay (In, Out, 0) = (In ^ Out) • Two connected delays result in a combined delay: N [Delay(Inl, Outl, nl) a Delay(In2, Out2, n2) a Outl 7n2] 3 Delay(Inl, Out2, nl + n2) Note that the total delay nl + rx2 is the sum of the delays nl and n2. An alternative delay model can be given containing an internal state of n + 1 bits that are shifted as in a queue. The two distinct models are formally equivalent as can be expressed and demonstrated with the temporal logic. The object len is used in the definition of Delay to measure time. Actually, other metrics seem possible. For example, some variable might represent the number of clock cycles or machine instructions executed in each interval. The properties of delay remain basically the same. §6 Multiplication Circuit The hardware multiplier considered here is motivated by one discussed in Wagner's work on hardware verification [20]. The desired device behavior is first described followed by a look at implementation techniques. The multiplier has the following general structure; 13 ------- Inl\0 ton — 1]=> In2\ 0 ton — 1] =4 Ck-*- Ld— n, count", cl, c2, c3 The circuit accepts two numbers and after a given number of clock cycles yields the product. The numbers are represented as unsigned n-bit vectors Inl and In2 while the output Out is a 2n-bii one. In addition to the vector inputs and output, there are two input bits Ck and Ld which control operation. The signal Ck serves as the clock input and Ld initiates the loading of the vectors to be multiplied. The field count tells how many clock cycles are required. The values el, c2 and c3 are timing coefficients used in the behavioral description. 6.1 Additional Notation Because the multiplier deals with numbers and their representation as bit vectors, it is convenient to introduce some extra notation before giving the device's formal description: • Subscripts on a vector V = (Vo,..., vn) normally range from 0 on the left to n on the right. The construct V[i] follows this style. However, to simplify reasoning about the correspondence between a bit vector and its numerical equivalent, a slightly different convention is adapted. The alternative notation V{i] indexes V from the right with the right-most element having subscript 0. For example: {1, 0, J-){0} = -L, (1,0,-L){1} = 0, (1, 0, _L){2} = 1 For a vector V and i > j, the expression V{z to j) forms a new vector out of the elements indexed from i down to j. If i < j, the empty vector is returned. For example, (0,9, _L, 2){3 to 1} = (0, 9, ±), (0, l){0to0} = (1), (_L, 1,0,1){1 to 2} = () • The predicate def X is true for a scalar value X if X does not equal _L. In this case, X is defined. A vector is defined exactly if all its components are. For => Out[0 to 2n — 1] 14 ------- example, the following values are defined; 0, 3, (1,0), () The values given below are not defined: ±, (±,±), (J-,0) • The function rival converts a bit vector to its unsigned numeric value. For example, nval{{ 0,1,1)) = 3, nval{{ 1,1,0,0)) = 12 If any element of the vector is undefined, rival yields _L as the result. Thus, nval(( 1, J_, 0, 0,1)) = ± 6.2 Overview of Description Techniques In what follows, the predicate Multiplier[M) specifies that desired behavior of a multiplication circuit. The device's various inputs, outputs and timing coefficients are represented as fields of the single parameter M. An iterative, timing-independent multiplication algorithm is then presented which computes a product by a series of successive additions. Later, the predicate Implementation(H) characterizes a device which computes sums and in fact has the algorithm's steps embedded within it. A logical implication is then given, showing how Implementation(H) realizes Multiplier (M). 6.3 Formal Specification of Multiplication Circuit The predicate Multiplier formally characterizes the circuit's desired structure and behavior. The single parameter M is a tuple representing the multiplier. For example, the expression M.Ck equals the clock input. The predicate's definition makes reference to other predicates given later: Multiplier(M) =def MultStructure(M) a ~ Calculate(M) The predicate MultStructure presents M's fields. The predicate Calculate gives the control sequencing required to perform a multiplication. The operator 0 indicates that Calculate must be true in all sub'intervals. 15 ------- Definition of Mult Structure'. The definition below of MultStructure contains information on the physical structure of the multiplier. Variables starting in upper case represent signals while lower-case ones are constant. Labels such as "Inputs:" are comments included to classify the various circuit fields. For example, M.Inl is an input bit vector. MultStructure(M) =def Inputs: (Ck, Ld): Bit, Inl\n — 1 to 0}: Bit, In2\n — 1 to 0}: Bit Outputs: Out{2n — 1 to 0}: Bit Parameters: n: nat, count: nat, cl, c2, c3: time For brevity, the prefix "M" is omitted when a field is referenced below. Definition of Calculate: If the inputs behave as specified by the predicate Control, the output Out ends up with the product of the initial values of Inl and In2. Recall that the function nvat converts a bit sequence to the corresponding numerical value. Calculate(M) =def Control(M) 3 [nval(Inl) • nval(In2)] —~ nval(Out) Definition of Control'. The predicate Control describes the required sequencing of the inputs so that a multiplication takes place. The computation first loads the circuit and then keeps the load line inactive while the clock is cycled. Control(M) =aef Load(M); ([Ld « 0] a Cycling(M)) 16 ------- Definition of Load", Loading is done as indicated by the predicate Load. The clock is cycled as given by the predicate Single Cycle. The control signal Ld starts with the value 1 and together with the other inputs Inl and In2 remains initially stable as long as the clock input Ck does, Load(M) —def SingleCycle(M) a beg{Ld = 1) a {Ld, Inl,In2) dep Ck Definition of SingleCycle: An individual clock cycle consists of a negative pulse: Single Cycle(M) =def It cl,c2,c3Ck The clock signal falls from 1 to 0 and then rises back to 1. The three times given indicate the minimum widths of the levels during which the clock is stable. Definition of Cycling: The overall cycling of the clock is as follows: Cycling(M) —def (Single Cycle(M))count A total of count individual cycles must be performed one after the other, where each is a negative pulse satisfying the predicate SingleCycle. Variants of the Specification The predicate Multiplier does not represent the only way to describe the mul- tiplier circuit. Alternative approaches based on an internal state can be shown to be formally equivalent to the one given here. A useful extension to this description specifies that once the output is computed, it remains stable as long as the control inputs do. If desired, additional quantitative timing details can readily be included. 6.4 Development of Multiplication Algorithm The specification predicate Multiplier intentionally makes no reference to any particular technique for multiplying. Since the process of multiplication does not 17 ------- generally depend on any specific circuit timing, it is natural to separate algorithmic issues from other.implementation details. The temporal logic now serves as a basis for deriving a suitable circuit-independent algorithm for determining the product and in the next section as a means for describing hardware that realizes this method. The synthesis process can be viewed as a proof in reverse, starting with the goal and ending with the necessary assumptions to achieve it. The aim here is to obtain an algorithm describing some way for doing the multiplication. The variables n, Inl, In 2 and Out are represented as fields of a variable A. The predicate Goal below specifies the desired result: :def Goal(A) beg(def Inl a def In2) =5 [nval[Inl) ¦ nval(In2)] rival (Out) If the data inputs Inl and In2 are initially defined, the output Out should end up with their product. The presentation given here reduces the problem of multiplying the two n-bit vectors to that of using repeated additions to determine successively larger partial products. The algorithm consists of initialization followed by n successive iterations. After i iterations of the loop, for i < n, the initial product of Inl and the least significant i bits of In2, that is, nval(Inl) • nval(In2\i — 1 to0}) is computed and available in the upper n + i bits of Out. Neither Inl nor In2 is guaranteed to remain stable once initialization is complete. However, their initial values must be used throughout the calculation. The lower n — i bits of Out hold the unexamined bits of In2 (i.e., In2{n — 1 to?}). In addition, an extra n-bit variable Temp is introduced in order to remember the original value of Inl. The following figure informally depicts the situation after i steps: partial product rest of In2 Out: nval(Inl) - nval(In2[i — 1 to0}) In2\n — 1 to i 2n —l n — % n —* —1 0 n + t bits n — i bits value of Inl Temp: Inl n — 1 n bits After n steps, Out equals the desired 2n-bit multiplication result. 18 ------- The predicate Assert below precisely specifies this behavior over i iterations for i < n. Note that both inputs Inl and In2 must be initially defined for the operations to properly take place. Assert(A, i) =der beg(def Inl a def In2) 3 [nval(Inl) • nval(In2\i — 1 toO})] —~ nval(Out{2n — 1 ton — t}) a In2\n — 1 to t} —> Out\n — i — 1 to 0} a Inl —~ Temp After n steps, the product must be computed. For i = n, Assert indeed observes this requirement: Assert(A, n) Goal [A) (*) Expressed in the logic, the algorithm takes the following form: Init(A); (Step(A))n In the next two subsections, the predicates Init and Step are given in detail. Both Init and Step are derived so as to maintain Assert after looping i times for any i < n: [i < n a Init(A.); (Step(A))1] Assert(A, i) (**) The properties (*) and (**) together ensure that n iterations of the loop calculate the product: Init [A); (Step(A))n 3 Goal {A) Deriving the Predicate Init The initialization requirement can be obtained by making sure Init satisfies Assert for i = 0: Init(A) p Assert (A, 0) 19 ------- Simplification of Assert yields the constraint Init(A) 3 beg(def Inl a def In2) 3 0 ~+ nval(Out{2n — 1 ton}) a In2 —+ Out{n — 1 to 0} a Inl —*¦ Temp This can be achieved by the definition Init{A) =def beg(def Inl a def In2) 3 (0,..., 0) —» Out{2n — 1 to n} a In2 —> Out{n — 1 to 0} a Inl —*¦ Temp Deriving the Predicate Step The iteration step should be constructed so that after i iterations for any i < n, Step can inductively widen the scope of the assertion to i + 1 increments: [z < n a Assert(A, i); Step(A)] Assert (A, i + 1) Each step achieves this by selectively adding Temp's n bits to Out, depending on Out's least bit, Only the top n bits of Out are actual inputs for the sum. The top n + 1 bits store the result. The remaining n — 1 bits of Out are simply shifted right. For Temp the requirement reduces to the formula Step(A) 3 beg(def Temp) 3 (Temp —~ Temp) This guarantees that Temp continues to remember the initial value of Inl. The constraint for Out is Step(A) 3 beg(def Out a def Temp) 3 [¦nval(Out{2n — 1 ton}) + O«£{0} * nva l(Temp)] —~ nval{Out{2n — 1 ton — 1}) A Oul{n — 1 to 1} —> Out{n — 2 to 0} 20 ------- Thus the overall incremental step can be realized by the definition Step^A.^ —def beg(def Out a def Temp) [nval(Out{2n — 1 ton}) + Out{0} • nval(Temp)] —*¦ nval(Out{2n — 1 ton — 1}) a Out{n — 1 to 1} —~ Out{n — 2 to 0} a Temp —*¦ Temp 6.5 Description of Implementation The circuit specified below performs the iterative algorithm just given. The definition includes relevant timing information and is broken down into parts describ- ing the implementation's physical structure and behavior. The primary predicate Implementation overviews operation. The device's fields are shown by ImpStructure. The predicate LoadPhase specifies device operation for initially loading the inputs. Once this is achieved, the predicate MultPhase indicates how to perform the in- dividual multiplication steps. Implementation(H) =def ImpS tructure (H) a (3(LoadPhase(H) a MultPhase(H)) Definition of ImpStructure'. The structure of the implementation differs from that of the original specification by the addition of the internal state Temp for maintaining the value of Inl and by the omission of a count field giving the required number of clock cycles for comput- ing a product. 21 ------- ImpStructure{H) =def Inputs: (Ck, Ld): Bit, Inl{n — 1 to 0}: Bit, In2\n — 1 to 0}: Bit Outputs: Out{2n — 1 to 0}: Bit Internal: Temp{n — 1 to 0}: Bit Parameters: n: nat, cl, c2, c3: time Definition of LoadPhase: The body of LoadPhase specifies how to load the inputs as described in the algorithm: LoadPhase(H) ^def Load(H) 3 Inii(H) The predicate Load gives the required loading sequence for the circuit inputs. The predicate Init refers to algorithm's initialization predicate. The definition of Load is identical to that of its namesake in Multiplier: Load{H) =def SingleCycle{H) a beg{Ld = 1) a {Ld,Inl,In2) dep Ck Individual clock cycles are also defined as in Multiplier: SingleCycle{H) =def |tcI,c2,c3^ Definition of MultPha.se: When the load signal is inactive at 0, the circuit can be clocked to perform a single iteration. The algorithm's predicate Step takes place over two clock cycles. MultPhase(H) =def [Ld « 0 a (SingleCycle{H)f ] 3 Step{H) 22 ------- Implementation Theorem The correspondence between the implementation Implementation and the original multiplier device specification Multiplier is now given by the theorem M.field = H.field; for the fields cJ, c2 and c3 The value of M. count corresponds to the 2n clock cycles needed for doing the iterative computation. The behavioral description Implementation can itself be realized by some even lower-level specification containing further details about the timing and using a still more concrete algorithm. For example, the iterative steps are decomposible into separate adds and shifts. If desired, the development ultimately examines such things as propagation through gates. §7 Conclusion and Future Plans Compared with conventional hardware description languages, the approach used here permits direct reasoning about signal, device and algorithm behavior at various levels of detail. In addition, the concepts relating specifications with implementations and hardware with register-transfer operations can be rigorously expressed within a single mathematical framework. A disadvantage arises from the inability to directly execute arbitrary descriptions. Standard temporal logics and other such notations have not been designed to concisely handle the kinds of quantitative timing properties and signal transitions found in the examples considered. The intervals of time provide a unifying means for presenting various features. The material presented only scratches the formalism's surface. Halpern et al. [6] and Moszkowski [14] cover many details of the logic, describing and comparing devices ranging from delay elements up to the Am2901 ALU bit slice developed by Advanced Micro Devices, Inc. Future work will examine microprocessors, buses and protocols, DMA, firmware and instruction sets, as well as the combined semantics of hardware and software. N Implementation(H) Multiplier(M) where the mapping from Ws fields to M's is M. field M.n M. count II.field, for the fields Inl, In2 and Out H.n 2 H.n 23 ------- §8 Acknowledgements Many thanks go to the following people for discussions and suggestions con- cerning the notation's readability (or lack thereof): Patrick Barkhordarian, Russell Greiner, Kevin Karplus, Amy Lansky, Yoni Malachi, Fumihiro Maruyama, Gudrun Polak, Alex Strong, Carolyn Talcott and Pierre Wolper. Professors John McCarthy and Zohar Manna gave much support and guidance as this research developed. Joseph Halpern provided valuable insights with regard to the logic's theoretical complexity. If it had not been for my friends at Siemens AG and the Polish Academy of Sciences, it is unlikely I would have undertaken this investigation. Late-night trans-Atlantic discussions with Mike Gordon helped provide a sense of intrigue. High est-quality chocolate and enthusiasm were always available from the Trischlers. References 1. M. R. Barbacci. Instruction Set Processor Specifications (ISPS): The notation and its applications. IEEE Transactions on Computers C-80, 1 (January 1981), pages 24-40. 2. G. V. Bochmann. Hardware specification with temporal logic: An example. IEEE Transactions on Computers C-31, 3 (March 1982), pages 223-231. 3. H. Eveking. The application of Conlan assertions to the correct description of hardware. Proceedings of the IFIP TC-10 Fifth International Conference on Computer Hardware Description Languages and their Applications, Kaisers- lautern, West Germany, September, 1981, pages 37-50. 4. M. Gordon. Register transfer systems and their behavior. Proceedings of the IF IP TC-10 Fifth International Conference on Computer Hardware De- scription Languages and their Applications, Kaiserslautern, West Germany, September, 1981, pages 23-36. 5. B. T. Hailpern and S. Owicki. Verifying network protocols using temporal logic. Tech. Rept. 192, Computer Systems Laboratory, Stanford University, June, 1980. 6. J. Halpern, Z. Manna, and B. Moszkowski. A hardware semantics based on temporal intervals, forthcoming. 7. D. Harel. First-Order Dynamic Logic. Springer-Yerlag, Berlin, 1979. Number 68 in the series Lecture Notes in Computer Science. 8. L. Lamport. Specifying concurrent program modules. Opus 60, Computer Science Laboratory, SRI International, June, 1981. 9. S. Leinwand and T. Lamdan. Algebraic analysis of nondeterministic behavior. Proceedings of the 17-th Design Automation Conference, Minneapolis, June, 1980, pages 483-493. 24 ------- 10. T. M. McWilliams. Verification of timing constraints on large digital systems. Proceedings of the 17-th Design Automation Conference, Minneapolis, June, 1980, pages 139-147. 11. Y. Malachi and S. S. Owicki. Temporal specifications of self-timed systems. VLSI Systems and Computations, Rockville, Maryland, 1981, pages 203-212. This book is the proceedings of a conference held at the Carnegie-Mellon University in October, 1981. 12. Z. Manna and A. Pnuelii The modal logic of programs. Tech. Rept. STAN-CS- 79-751, Department of Computer Science, Stanford University, September, 1979. 13. P. Meinen. Formal semantic description of register transfer language elements and mechanized simulator construction. Proceedings of the 4-th Interna- tional Symposium on Computer Hardware Description Languages, Palo Alto, California, October, 1979, pages 69-74. 14. B. Moszkowski. Reasoning about Digital Circuits. Ph.D. Thesis, Dept. of Com- puter Science, Stanford University, forthcoming. 15. A. C. Parker and J. J. Wallace. SLIDE: An I/O hardware description language. IEEE Transactions on Computers C-30, 6 (June 1981), pages 423-439. 16. D. A. Patterson. Strum: Structured microprogram development system for correct firmware. IEEE Transactions on Computers C-25, 10 (October 1976), pages 974-985. 17. N. Rescher and A. Urquart: Temporal Logic. Springer-Verlag, New York, 1971. 18. R. L. Schwartz and P. M. Melliar-Smith. Temporal logic specification of distributed systems. Proceedings of the Second International Conference on Distributed Computing Systems, Paris, France, April, 1981, pages 446-454. 19. S. Y. H. Su, C. Huang and P. Y. K. Fu. A new multi-level hardware design language (LALSD II) and translator. Proceedings of the IFIP TC-10 Fifth International Conference on Computer Hardware Description Languages and their Applications, Kaiserslautern, West Germany, September, 1981, pages 155-169. 20. T. Wagner. Hardware Verification. Ph.D. Thesis, Dept. of Computer Science, Stanford University, September 1977. 25 ------- TECHNICAL REPORT DATA A E ERL- P" 9 94 (Please read Instructions on the reverse before complet 1. REPORT NO. EPA/600/A-92/197 2. 3. 4. TITLE AND SUBTITLE Air Toxics: The Research Challenge of the 1990 Clean 5. REPORT DATE Air Act Amendments 6. PERFORMING ORGANIZATION COOE 7. AUTHOR(S) Frank T. Princiotta and Douglas G. McKinney 8. PERFORMING ORGANIZATION REPORT NO, 9. PERFORMING ORGANIZATION NAME AND ADORESS 10. PROGRAM ELEMENT NO. See Block 12 11. CONTRACT/GRANT NO. NA (Inhouse) 12. SPONSORING AGENCY NAME AND ADDRESS EPA, Office of Research and Development Air and Energy Engineering Research Laboratory Research Triangle Park, NC 27711 13. TYPE OF REPORT AND PERIOD COVERED Published paper; 11/91-9/92 14. SPONSORING AGENCY CODE EPA/600/13 15. supplementary NOTES AEERL project officer is Douglas G. McKinney, 919/541-3006. Mail Drop 60, is. abstract The paper describes (1) major provisions of Title III of the 1990 Clean Air Act Amendments (CAAAs) which formally established a new regulatory approach which would avoid past impediments and accelerate emission reductions, and (2) the research that the U. S. EPA has initiated to support state and federal regulatory of- ficials as they implement the extensive new provisons of the CAAAs, Toxic emis- sions from stationary air pollution sources have been recognized as a national health problem for several decades. Unfortunately, a large percentage of these hazardous air pollutant (HAP) emissions have not been controlled because, between 1977 and 1990, the risk-based federal regulatory program to reduce them addressed only a few pollutants. Disputes between industry, the U. S. EPA, and environmental groups over health effects data, exposure levels, and what constitutes an ample margin of safety to protect the public health were the primary impediments to progress and limited the number of National Emission Standards for Hazardous Air Pollutants (NESHAPS) issued to only 10. The lack of progress toward reducing HAP emissions raised public concern and convinced Congress to design the modified approach. 17. KEY WORDS AND DOCUMENT ANALYSIS a. DESCRIPTORS b.IDENTIFIERS/OPEN ENDED TERMS c. cosati Field/Group Pollution Toxicity Research Emission Pollution Control Stationary Sources Air Toxics Hazardous Air Emission 13 B 06T 14F 14 G 18. DISTRIBUTION STATEMENT 19. SECURITY CLASS (This Report) Unclassified 21. NO. OF PAGES 8 Release to Public 20. SECURITY CLASS (This page) Unclassified 22. PRICE EPA Form 2220-1 (9-73) ------- |