1 IntroductionTo become practical for debugging, assurance, and certif dịch - 1 IntroductionTo become practical for debugging, assurance, and certif Việt làm thế nào để nói

1 IntroductionTo become practical f

1 Introduction
To become practical for debugging, assurance, and certification, formal methods must be made more cost-effective. Incremental improvements to individual verification techniques will not suffice. It is our basic premise that a significant advance in the effectiveness and automation of verification of concurrent systems is possible by engineering a systematic separation of concerns through a truly integrated combination of static analysis, model checking, and theorem proving techniques. A key idea is to change the perception (and implementation) of model checkers and theorem provers from tools that perform verifications to ones that calculate properties such as slices, abstractionsand invariants. In this way, big problems are cut down to manageable size, and properties of big systems emerge from those of reducedsubsystems obtainedby slicing, abstraction, and composition. By iterating through several such steps, it becomes possible to incrementally accumulate properties that eventually enable computation of a substantial new property—which in turn enables accumulation of further properties. By interacting at the level of properties and abstractions, multiple analysis tools can be used to derive properties that are beyond the capabilities of any individual tool.
SAL (Symbolic Analysis Laboratory) addresses these issues. It is a framework for combining different tools for abstraction, program analysis, theorem proving, and model checking toward the calculation of properties (symbolic analysis) of concurrent systems expressed as transition systems. The heart of SAL is an intermediate language, developed in collaboration with Stanford, Berkeley, and Verimag for specifying concurrent systems in a compositional way. This language will serve as the target for translators that extract the transition system description for popular programming languages such as Esterel, Java, or Verilog. The intermediate language also serves as a common description from which different analysis tools can be driven by translating the intermediate language to the input format for the tools and translating the output of these tools back to the SAL intermediate language.
This paper is structured as follows. In Section 2 we describe the motivation and rationale behind the design of the SAL language and give an overview of its main features. The main part, Section 3, describes SAL components including slicing, invariant generation, abstraction, model checking, simulation, and theorem proving together with their integration into the SAL toolset. Section 4 concludes with some remarks.
2 The SAL Common Intermediate Language
Mechanized formal analysis starts from a description of the problem of interest expressed in the notation of the tool to be employed. Construction of this description often entails considerable work: first to recast the system specification from its native expression in C, Esterel, Java, SCR, UML, Verilog, or whatever, into the notation of the tool concerned, then to extract the part that is relevant to the analysis at hand, and finally to reduce it to a form that the tool can handle. If a second tool is to be employed for a different analysis, then a second description of the problem must be prepared, with considerable duplicationof effort. With source languages and tools, we need translators. This situation naturally suggests use of a common intermediate language, where the numbers of tools required could be reduced to translators.
The intermediate language must serve as a medium for representing the state transition semantics of a system described in a source language such as Java or Esterel. It must also serve as a common representation for driving a number of back-end tools such as theorem provers and model checkers. A useful intermediate language for describing concurrent systems must attempt to preserve both the structure and meaning of the original specification while supporting a modular analysis of the transition system.
For these reasons, the SAL intermediate language is a rather rich language. In the sequel, we give an overview of the main features of the SAL type language, the expression language, the module language, and the context language. For a precise definition and semantics of the SAL language, including comparisons to related languages for expressing concurrent systems, see [31].
The type system of SAL supports basic types such as booleans, scalars, integers and integer subranges, records, arrays, and abstract datatypes. Expressions are strongly typed. The expressions consist of constants, variables, applications of Boolean, arithmetic, and bit-vector operations (bit-vectors are just arrays of Booleans), and array and record selection and updates. mutex : CONTEXT = BEGIN
PC: TYPE = trying, critical, sleeping
mutex [tval:boolean] : MODULE = BEGIN
INPUT pc2: PC, x2: boolean
OUTPUT pc1: PC, x1: boolean
INITIALIZATION
TRUE --> pc1 = sleeping; x1 = tval
TRANSITION pc1 = sleeping
--> pc1’ = trying; x1’ = (x2=tval)
[] pc1 = trying AND
(pc2=sleeping OR x1= (x2/=tval))
--> pc1’ = critical
[] pc1 = critical
--> pc1’ = sleeping; x1’ = (x2=tval) END
system: MODULE = HIDE x1,x2
(mutex[FALSE]
|| RENAME pc2 TO pc1, x2 TO x1, pc1 TO pc2, x1 TO x2 mutex[TRUE])
mutualExclusion: THEOREM system |-
AG(NOT(pc1=critical
AND pc2=critical))
eventually1: LEMMA system |- EF(pc1=critical)
eventually2: LEMMA
system |- EF(pc2=critical)
END
Figure 1. Mutual Exclusion
Conditional expressions are also part of the expression language and user-defined functions may also be introduced.
A module is a self-contained specification of a transition system in SAL. Usually, several modules are collected in a context. Contexts also include type and constant declarations. A transition system module consists of a state type, an initialization condition on this state type, and a binary transition relation of a specific form on the state type. The state type is defined by four pairwise disjoint sets of input, output, global, and local variables. The input and global variables are the observed variables of a module and the output, global, and local variables are the controlled variables of the module. It is good pragmatics to name a module. This name can be used to index the local variables so that they need not be renamed during composition. Also, the properties of the module can be indexed on the name for quick lookup.
Consider, for example, the SAL specification of a variant of Peterson’s mutual exclusion algorithm in Figure 1. Here the state of the module consists of the controlled variables corresponding to its own program counter pc1 and boolean variable x1, and the observed variables are the corresponding pc2 and x2 of the other process.
The transitions of a module can be specified variablewise by means of definitions or transition-wise by guarded commands. Henceforth, primed variables X’ denote next-state variables. A definition is of the form X = f(Y, Z). Both the initializations and transitions can also be specified as guarded assignments. Each guarded command consists of a guarded formula and an assignment part. The guard is a boolean expression in the current controlled (local, global, and output) variables and current-state and next-state input variables. The assignment part is a list of equalities between a lefthand side next-state variable and a right hand side expression in both current-state and next-state variables.
Parametric modules allow the use of logical (stateindependent) and type parameterization in the definition of modules. Module mutex in Figure 1, for example, is parametric in the Boolean tval. Furthermore, modules in SAL can be combined by either synchronous composition ||, or asynchronous composition []. Two instances of the mutex module, for example, are conjoined synchronously to form a module called system in Figure 1. This combination also uses hiding and renaming. Output and global variables can be made local by the HIDE construct. In order to avoid name clashes, variables in a modulecan be renamedusing the RENAME construct.
Besides declaring new types, constants, or modules, SAL also includes constructs for stating module properties and abstractions between modules. CTL formulas are used, for example,in Figure 1 to state safety and liveness properties about the combined module system.
The form of composition in SAL supports a compositional analysis in the sense that any module properties expressed in linear-time temporal logic or in the more expressive universal fragment of CTL* are preserved through composition. A similar claim holds for asynchronous composition with respect to stuttering invariant properties where a stuttering step is one where the local and output variables of the module remain unchanged.
Because SAL is an environmentwhere theorem proving as well as model checking is available, absence of causal loops in synchronous systems is ensured by generating proof obligations, rather than by more restrictive syntactic methods as in other languages. Consider the following definitions:
X = IF A THEN NOT Y ELSE C ENDIF
Y = IF A THEN B ELSE X ENDIF
This pair of definitions is acceptable in SAL because we can prove that X is causally dependent on Y only when A is true, and vice-versa only when it is false—hence there is no causal loop. In general, causality checking generates proof obligations asserting that the conditions that can trigger a causal loop are unreachable.
0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
1 IntroductionTo become practical for debugging, assurance, and certification, formal methods must be made more cost-effective. Incremental improvements to individual verification techniques will not suffice. It is our basic premise that a significant advance in the effectiveness and automation of verification of concurrent systems is possible by engineering a systematic separation of concerns through a truly integrated combination of static analysis, model checking, and theorem proving techniques. A key idea is to change the perception (and implementation) of model checkers and theorem provers from tools that perform verifications to ones that calculate properties such as slices, abstractionsand invariants. In this way, big problems are cut down to manageable size, and properties of big systems emerge from those of reducedsubsystems obtainedby slicing, abstraction, and composition. By iterating through several such steps, it becomes possible to incrementally accumulate properties that eventually enable computation of a substantial new property—which in turn enables accumulation of further properties. By interacting at the level of properties and abstractions, multiple analysis tools can be used to derive properties that are beyond the capabilities of any individual tool.SAL (Symbolic Analysis Laboratory) addresses these issues. It is a framework for combining different tools for abstraction, program analysis, theorem proving, and model checking toward the calculation of properties (symbolic analysis) of concurrent systems expressed as transition systems. The heart of SAL is an intermediate language, developed in collaboration with Stanford, Berkeley, and Verimag for specifying concurrent systems in a compositional way. This language will serve as the target for translators that extract the transition system description for popular programming languages such as Esterel, Java, or Verilog. The intermediate language also serves as a common description from which different analysis tools can be driven by translating the intermediate language to the input format for the tools and translating the output of these tools back to the SAL intermediate language.This paper is structured as follows. In Section 2 we describe the motivation and rationale behind the design of the SAL language and give an overview of its main features. The main part, Section 3, describes SAL components including slicing, invariant generation, abstraction, model checking, simulation, and theorem proving together with their integration into the SAL toolset. Section 4 concludes with some remarks.2 The SAL Common Intermediate LanguageMechanized formal analysis starts from a description of the problem of interest expressed in the notation of the tool to be employed. Construction of this description often entails considerable work: first to recast the system specification from its native expression in C, Esterel, Java, SCR, UML, Verilog, or whatever, into the notation of the tool concerned, then to extract the part that is relevant to the analysis at hand, and finally to reduce it to a form that the tool can handle. If a second tool is to be employed for a different analysis, then a second description of the problem must be prepared, with considerable duplicationof effort. With source languages and tools, we need translators. This situation naturally suggests use of a common intermediate language, where the numbers of tools required could be reduced to translators.The intermediate language must serve as a medium for representing the state transition semantics of a system described in a source language such as Java or Esterel. It must also serve as a common representation for driving a number of back-end tools such as theorem provers and model checkers. A useful intermediate language for describing concurrent systems must attempt to preserve both the structure and meaning of the original specification while supporting a modular analysis of the transition system.For these reasons, the SAL intermediate language is a rather rich language. In the sequel, we give an overview of the main features of the SAL type language, the expression language, the module language, and the context language. For a precise definition and semantics of the SAL language, including comparisons to related languages for expressing concurrent systems, see [31].The type system of SAL supports basic types such as booleans, scalars, integers and integer subranges, records, arrays, and abstract datatypes. Expressions are strongly typed. The expressions consist of constants, variables, applications of Boolean, arithmetic, and bit-vector operations (bit-vectors are just arrays of Booleans), and array and record selection and updates. mutex : CONTEXT = BEGINPC: TYPE = trying, critical, sleepingmutex [tval:boolean] : MODULE = BEGININPUT pc2: PC, x2: booleanOUTPUT pc1: PC, x1: booleanINITIALIZATIONTRUE --> pc1 = sleeping; x1 = tvalTRANSITION pc1 = sleeping--> pc1’ = trying; x1’ = (x2=tval)[] pc1 = trying AND(pc2=sleeping OR x1= (x2/=tval))--> pc1’ = critical[] pc1 = critical--> pc1’ = sleeping; x1’ = (x2=tval) ENDsystem: MODULE = HIDE x1,x2(mutex[FALSE]|| RENAME pc2 TO pc1, x2 TO x1, pc1 TO pc2, x1 TO x2 mutex[TRUE])mutualExclusion: THEOREM system |-AG(NOT(pc1=criticalAND pc2=critical))eventually1: LEMMA system |- EF(pc1=critical)eventually2: LEMMAsystem |- EF(pc2=critical)END
Figure 1. Mutual Exclusion
Conditional expressions are also part of the expression language and user-defined functions may also be introduced.
A module is a self-contained specification of a transition system in SAL. Usually, several modules are collected in a context. Contexts also include type and constant declarations. A transition system module consists of a state type, an initialization condition on this state type, and a binary transition relation of a specific form on the state type. The state type is defined by four pairwise disjoint sets of input, output, global, and local variables. The input and global variables are the observed variables of a module and the output, global, and local variables are the controlled variables of the module. It is good pragmatics to name a module. This name can be used to index the local variables so that they need not be renamed during composition. Also, the properties of the module can be indexed on the name for quick lookup.
Consider, for example, the SAL specification of a variant of Peterson’s mutual exclusion algorithm in Figure 1. Here the state of the module consists of the controlled variables corresponding to its own program counter pc1 and boolean variable x1, and the observed variables are the corresponding pc2 and x2 of the other process.
The transitions of a module can be specified variablewise by means of definitions or transition-wise by guarded commands. Henceforth, primed variables X’ denote next-state variables. A definition is of the form X = f(Y, Z). Both the initializations and transitions can also be specified as guarded assignments. Each guarded command consists of a guarded formula and an assignment part. The guard is a boolean expression in the current controlled (local, global, and output) variables and current-state and next-state input variables. The assignment part is a list of equalities between a lefthand side next-state variable and a right hand side expression in both current-state and next-state variables.
Parametric modules allow the use of logical (stateindependent) and type parameterization in the definition of modules. Module mutex in Figure 1, for example, is parametric in the Boolean tval. Furthermore, modules in SAL can be combined by either synchronous composition ||, or asynchronous composition []. Two instances of the mutex module, for example, are conjoined synchronously to form a module called system in Figure 1. This combination also uses hiding and renaming. Output and global variables can be made local by the HIDE construct. In order to avoid name clashes, variables in a modulecan be renamedusing the RENAME construct.
Besides declaring new types, constants, or modules, SAL also includes constructs for stating module properties and abstractions between modules. CTL formulas are used, for example,in Figure 1 to state safety and liveness properties about the combined module system.
The form of composition in SAL supports a compositional analysis in the sense that any module properties expressed in linear-time temporal logic or in the more expressive universal fragment of CTL* are preserved through composition. A similar claim holds for asynchronous composition with respect to stuttering invariant properties where a stuttering step is one where the local and output variables of the module remain unchanged.
Because SAL is an environmentwhere theorem proving as well as model checking is available, absence of causal loops in synchronous systems is ensured by generating proof obligations, rather than by more restrictive syntactic methods as in other languages. Consider the following definitions:
X = IF A THEN NOT Y ELSE C ENDIF
Y = IF A THEN B ELSE X ENDIF
This pair of definitions is acceptable in SAL because we can prove that X is causally dependent on Y only when A is true, and vice-versa only when it is false—hence there is no causal loop. In general, causality checking generates proof obligations asserting that the conditions that can trigger a causal loop are unreachable.
đang được dịch, vui lòng đợi..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
1 Giới thiệu
Để trở thành thực tế để gỡ lỗi, bảo đảm, và chứng nhận, phương pháp chính thức phải được thực hiện có hiệu quả về chi phí hơn. Cải tiến gia tăng để xác minh các kỹ thuật cá nhân sẽ không đủ. Đó là tiền đề cơ bản của chúng tôi là một bước tiến đáng kể trong hiệu quả và tự động xác minh của hệ thống đồng thời là có thể do kỹ thuật một tách hệ thống các mối quan tâm thông qua một sự kết hợp thực sự tích hợp của phân tích tĩnh, mô hình kiểm tra, và định lý chứng minh kỹ thuật. Một ý tưởng quan trọng là thay đổi nhận thức (và thực hiện) của cờ mô hình và provers lý từ các công cụ thực hiện xác minh cho những người mà tính toán tính như lát, abstractionsand bất biến. Bằng cách này, những vấn đề lớn được cắt giảm để kích thước có thể quản lý, và các đặc tính của hệ thống lớn nổi lên từ những reducedsubsystems obtainedby slicing, trừu tượng, và thành phần. Bằng cách duyệt qua một vài bước như vậy, nó trở thành có thể để từng bước tích lũy tài sản mà cuối cùng cho phép tính toán của một đáng kể mới tài sản đó cho phép tích lũy tài sản hơn nữa. Bằng cách tương tác ở cấp độ của tài sản và trừu tượng, nhiều công cụ phân tích có thể được sử dụng để lấy tài sản đó là vượt quá khả năng của bất kỳ công cụ riêng lẻ.
SAL (Symbolic Phân tích thí nghiệm) giải quyết những vấn đề này. Đó là một khuôn khổ cho việc kết hợp các công cụ khác nhau cho tính trừu tượng, phân tích chương trình, định lý minh, mô hình và kiểm tra đối với các tính chất (phân tích biểu tượng) của hệ thống đồng thời thể hiện như hệ thống chuyển tiếp. Trái tim của SAL là một ngôn ngữ trung gian, phát triển hợp tác với Stanford, Berkeley, và Verimag để xác định hệ thống đồng thời một cách sáng tác. Ngôn ngữ này sẽ phục vụ như là mục tiêu cho các dịch giả mà trích xuất các hệ thống mô tả quá trình chuyển đổi cho các ngôn ngữ lập trình phổ biến như Esterel, Java, hoặc Verilog. Các ngôn ngữ trung gian cũng phục vụ như là một mô tả chung mà từ đó các công cụ phân tích khác nhau có thể được điều khiển bằng cách dịch các ngôn ngữ trung gian để định dạng đầu vào cho các công cụ và dịch đầu ra của các công cụ này lại về ngôn ngữ trung gian SAL.
Bài viết này được cấu trúc như sau. Trong phần 2, chúng tôi mô tả các động lực và lý do đằng sau thiết kế của ngôn ngữ SAL và đưa ra một cái nhìn tổng quan về các tính năng chính của nó. Phần chính, mục 3, mô tả các thành phần SAL bao gồm cắt, hệ bất biến, trừu tượng, mô hình kiểm tra, mô phỏng, và định lý chứng minh cùng với hội nhập của họ vào các công cụ SAL. Mục 4 kết luận với một số nhận xét.
2 SAL Common Intermediate Language
Cơ giới phân tích chính thức bắt đầu từ một mô tả của vấn đề quan tâm thể hiện trong ký hiệu của các công cụ được sử dụng. Xây dựng các mô tả này thường đòi hỏi công việc đáng kể: đầu tiên để viết lại các đặc điểm kỹ thuật hệ thống từ ngữ bản địa của nó trong C, Esterel, Java, SCR, UML, Verilog, hoặc bất cứ điều gì, vào ký hiệu của các công cụ liên quan, sau đó để trích xuất các phần đó là có liên quan đến việc phân tích ở bàn tay, và cuối cùng để giảm bớt nó thành một dạng công cụ này có thể xử lý. Nếu một công cụ thứ hai là để được làm việc cho một phân tích khác nhau, sau đó là một mô tả thứ hai của vấn đề phải được chuẩn bị, với sự nỗ lực duplicationof đáng kể. Với ngôn ngữ nguồn và các công cụ, chúng ta cần dịch. Tình trạng này một cách tự nhiên cho thấy việc sử dụng một ngôn ngữ trung gian phổ biến, nơi con số của các công cụ cần thiết có thể được giảm đến phiên dịch.
Các ngôn ngữ trung gian phải phục vụ như một phương tiện để biểu diễn ngữ nghĩa chuyển đổi trạng thái của một hệ thống được mô tả trong một ngôn ngữ nguồn như Java hay Esterel . Nó cũng phải phục vụ như là một biểu tượng chung cho lái xe một số công cụ back-end như provers lý, người kiểm tra mô hình. Một ngôn ngữ trung gian hữu ích để mô tả hệ thống đồng thời phải cố gắng giữ gìn cả các cấu trúc và ý nghĩa của các đặc điểm kỹ thuật ban đầu khi hỗ trợ một phân tích mô-đun của hệ thống chuyển đổi.
Đối với những lý do này, các ngôn ngữ trung gian SAL là một ngôn ngữ khá phong phú. Trong phần tiếp theo, chúng tôi cung cấp một cái nhìn tổng quan về các tính năng chính của ngôn ngữ loại SAL, ngôn ngữ biểu hiện, ngôn ngữ mô-đun, và ngôn ngữ ngữ cảnh. Đối với một định nghĩa chính xác và ngữ nghĩa của ngôn ngữ SAL, kể cả so sánh với ngôn ngữ liên quan để diễn tả hệ thống đồng thời, xem [31].
Các loại hệ thống của SAL hỗ trợ các loại cơ bản như toán luận, vô hướng, số nguyên và subranges số nguyên, hồ sơ, mảng, và kiểu dữ liệu trừu tượng. Biểu thức được đánh mạnh. Các biểu thức bao gồm các hằng, biến, ứng dụng của Boolean, số học, và các hoạt động bit-vector (bit-vectơ chỉ là mảng Boolean), và mảng và ghi lại lựa chọn và cập nhật. mutex: BỐI CẢNH = BEGIN
PC: TYPE = cố gắng, quan trọng, ngủ
mutex [tval: boolean]: MODULE = BEGIN
VÀO PC2: PC, x2: boolean
OUTPUT pc1: PC, x1: boolean
INITIALIZATION
TRUE -> pc1 = ngủ; x1 = tval
CHUYỂN pc1 = ngủ
-> pc1 '= cố gắng; x1 '= (x2 = tval)
[] = pc1 cố gắng VÀ
(PC2 = ngủ OR x1 = (x2 / = tval))
-> pc1 '= critical
[] pc1 = critical
-> pc1 '= ngủ; x1 '= (x2 = tval) END
hệ thống: MODULE = HIDE x1, x2
(mutex [FALSE]
|| RENAME PC2 TO pc1, x2 TO x1, pc1 TO PC2, x1 x2 TO mutex [TRUE])
mutualExclusion: Hệ thống Định lý | -
AG (NOT (pc1 = critical
và PC2 = critical))
eventually1: hệ thống bổ đề | - EF (pc1 = critical)
eventually2: Bổ đề
hệ thống | - EF (PC2 = critical)
END
Hình 1. Loại trừ lẫn nhau
biểu thức có điều kiện cũng là một phần của ngôn ngữ biểu hiện và chức năng người dùng định nghĩa cũng có thể được giới thiệu.
Một module là một đặc điểm kỹ thuật khép kín của một hệ thống chuyển tiếp trong SAL. Thông thường, một số mô-đun được thu thập trong một bối cảnh. Bối cảnh cũng bao gồm các loại tờ khai và liên tục. Một module hệ thống chuyển tiếp bao gồm tên kiểu nhà nước, một điều kiện khởi tạo vào loại trạng thái này, và một mối quan hệ chuyển đổi nhị phân của một hình thức cụ thể về các loại hình nhà nước. Các loại nhà nước được quy định bởi bốn bộ tách rời cặp đầu vào, đầu ra, toàn cầu, và các biến địa phương. Các đầu vào và các biến toàn cầu là các biến quan sát của một mô-đun và các đầu ra, toàn cầu, và các biến địa phương là các biến kiểm soát của các mô-đun. Nó là dụng pháp tốt để đặt tên cho một module. Tên này có thể được sử dụng để chỉ các biến địa phương để họ không cần phải được đổi tên trong thành phần. Ngoài ra, các tính chất của các mô-đun có thể được lập chỉ mục trên các tên để tra cứu nhanh chóng.
Xem xét, ví dụ, các đặc điểm kỹ thuật SAL của một biến thể của thuật toán loại trừ lẫn nhau của Peterson trong Hình 1. Ở đây, nhà nước của các mô-đun bao gồm các biến kiểm soát tương ứng riêng pc1 nó đếm chương trình và boolean biến x1, và các biến quan sát là PC2 tương ứng và x2 của quá trình khác.
Quá trình biến đổi của một mô-đun có thể được chỉ định variablewise bằng phương tiện của các định nghĩa hoặc chuyển khôn ngoan bằng cách ra lệnh canh gác. Từ đó về sau, sơn lót biểu thị biến tiếp theo trạng thái biến X '. Một định nghĩa có dạng X = f (Y, Z). Cả khởi tạo và chuyển tiếp cũng có thể được quy định như bài tập bảo vệ. Mỗi lệnh bảo vệ bao gồm một công thức bảo vệ và một phần chuyển nhượng. Bảo vệ là một biểu thức boolean trong kiểm soát (địa phương, toàn cầu, và đầu ra) biến và hiện tại, nhà nước và các biến đầu vào tiếp theo nhà nước hiện hành. Các phần chuyển nhượng là một danh sách các bất đẳng giữa một biến tiếp theo nhà nước ở phía bên trái và một biểu hiện bên tay phải trong các biến cả hiện tại-nhà nước và tiếp theo nhà nước.
modules Parametric cho phép sử dụng hợp lý (stateindependent) và kiểu tham số trong định nghĩa của mô-đun. Module mutex trong hình 1, ví dụ, là tham số trong tval Boolean. Hơn nữa, mô-đun trong SAL có thể được kết hợp bởi hai thành phần đồng bộ ||, hoặc thành phần không đồng bộ []. Hai trường hợp của module mutex, ví dụ, là dính liền đồng bộ để tạo thành một module gọi là hệ thống trong Hình 1. Sự kết hợp này cũng sử dụng ẩn và đổi tên. Đầu ra và các biến toàn cầu có thể được thực hiện tại địa phương bởi các cấu trúc hide. Để tránh xung đột tên, các biến trong một modulecan được renamedusing các cấu trúc RENAME.
Bên cạnh đó tuyên bố mới các loại, các hằng số, hoặc mô-đun, SAL cũng bao gồm các cấu trúc để nêu đặc tính mô-đun và trừu tượng hóa giữa các module. Công thức CTL được sử dụng, ví dụ, trong hình 1 để an toàn và tài sản nhà nước liveness về hệ thống mô-đun kết hợp.
Các hình thức của các thành phần trong SAL hỗ trợ một phân tích thành phần trong ý nghĩa rằng bất kỳ thuộc tính mô-đun hiện trong thời gian tuyến tính logic của thời gian hoặc trong fragment phổ quát biểu cảm hơn của CTL * được bảo tồn thông qua thành phần. Một tuyên bố tương tự như giữ cho các thành phần không đồng bộ đối với nói lắp thuộc tính bất biến nơi một bước nói lắp là một nơi mà các biến địa phương và đầu ra của các mô-đun vẫn không thay đổi.
Bởi vì SAL là một định lý environmentwhere minh cũng như mô hình kiểm tra có sẵn, sự vắng mặt của các vòng nhân quả trong các hệ thống đồng bộ được đảm bảo bằng cách tạo ra các nghĩa vụ chứng minh, chứ không phải bằng các phương pháp cú pháp chặt chẽ hơn như trong các ngôn ngữ khác. Hãy xem xét các định nghĩa sau:
X = IF THEN ELSE A KHÔNG Y C ENDIF
Y = IF A THEN ELSE B X ENDIF
Điều này đôi nghĩa là chấp nhận được trong SAL bởi vì chúng ta có thể chứng minh rằng X là nhân quả phụ thuộc vào Y chỉ khi A là đúng, và ngược lại chỉ khi nó là giả do đó không có vòng lặp nhân quả. Nói chung, kiểm tra nguyên nhân tạo ra nghĩa vụ chứng minh khẳng định rằng các điều kiện có thể kích hoạt một vòng lặp nhân quả là không thể truy cập.
đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: