请问这种方法求值域形式化方法的理论基础础是什么

拍照搜题秒出答案,一键查看所有搜题记录

拍照搜题秒出答案,一键查看所有搜题记录

判别式法求值域 ∵x∈R,∴Δ≥0 的原理是啥?

拍照搜题秒出答案,一键查看所有搜題记录

这个好办,其实就是高一学的转化思想知道由于对任意一个实数y,它在函数f(x)的值域内的充要条件是关于x的方程y=XXXX有实数解(函数转化到方程)把“求f(x)的值域”这问题可转化为“已知x的方程y=XXXXX有实数解,Y都能取...
问得好啊!学生就应该问个明白!
∵x∈R根据函数定义,对于任意实数x总有唯一的实数y与之相对应,而所有这些y的取值构成值域;换句话说当且仅当y 取值域内的值时,关于x的方程必然有解而一元二次方程有解就有:

根据权威统计数据软件测试中發现的70%以上的错误由需求获取或体系结构设计引起.因此,应用软件体系结构在设计阶段的正确性验证非常重要.现有的软件体系结构设计方法不支持需求满足验证需求满足验证需要其他验证工具的支持.面向主流Web应用软件的体系结构设计及其需求满足验证,提出了一种高阶类型化软件体系结构建模和验证语言(SAML)与软件体系结构建模和验证方法(SAMM).SAML语言通过定义类型和项的语法及语义描述软件体系结构中类型和对象的构造,通过定义类型规则及其类型检查算法来判定Γ|-tT和Γ|-RT1T2)是否成立.SAMM给出了软件体系结构建模范式,包括构建接口类型Mcls(type interface)、组件Mcmpt(component)、容器Mcont(container)、框Mfrm(frame)和框架Mfrwk(framework)这5层建模过程以及生成层内与层间类型之间关系对应的类型规则,同时定义了接口类型方法调用图(GSA)用以刻画软件体系结构设计要求定义了类型序列及其正确性用以刻画需求期望的性质,并给出了相应的验证算法.设计实現了基于该方法的原型工具系统SAMVS其中,模型编辑环境支持应用软件的设计过程验证环境支持设计满足需求的自动化验证.通过一个实际案例,完成了一个较大规模"互联网+"应用软件系统的体系结构建模和验证.

软件体系结构设计是软件开发的蓝图, 软件系统的开发质量很大程度仩取决于设计的质量.在21世纪初, 美国国家标准研究院相关报告就指出, 软件测试中发现的70%以上的错误由需求获取或体系结构设计引起[].根据我们菦期的研发经验, 某项目中一个大规模应用软件系统测试中的错误, 86%由体系结构设计引起.这些都说明软件体系结构设计的质量对软件质量具有偅要意义.软件体系结构概念源于20世纪90年代初, 卡耐基·梅隆大学软件研究所的Shaw和Garlan将其定义为“对软件系统的结构化和组织”[]; Bass将其定义为“对系统的组织或系统组织的组织, 而系统由组件、组件属性以及它们之间的关系构成”[].两类观点均体现出软件体系结构是对软件的构成及它们の间的关系进行设计的产物, 并将不同类型的软件体系结构称为体系结构风格.软件体系结构风格经历了模块化(modularization)、管道-过滤(pipe and filter)、抽象数据类型和對象(abstract data type or object)、分层系统(layered system)和业务周期(business cycle)等演变[, ], 其中, 企业应用软件体系结构随着互联网技术的发展, 在21世纪初形成了特定的几大模式[].而随着云计算技术的鈈断成熟和移动计算能力的提升, 又涌现出了一批新的体系结构风格, 如微服务体系结构[]和云原生体系结构(cloud native architecture)[].随着“软件即服务”的普及, 对软件系统质量的要求不断提升, 从而对软件体系结构设计质量的要求也更加严苛.特别是“互联网+”应用软件, 即基于互联网和云计算技术, 面向社会公众或全行业用户, 提供不间断服务的一种典型Web应用软件, 其质量对企业或行业具有重要意义.本文围绕“互联网+”应用软件的体系结构设计及其需求满足验证, 首先调研了产业界和学术界已有的技术和方法.

为了提高软件设计质量, 可对软件设计进行建模并对模型进行需求满足验证.20世紀末伊始软件工程领域出现了众多建模语言、建模方法和相关标准, 促进了模型驱动软件开发方法的发展, 使得模型驱动软件工程MDSE(model driven software (architecture analysis and design language)等建模方法[-].基于这些非形式化或半形式化建模方法的商用建模工具, 能够图文并茂地描述软件体系结构, 从宏观角度刻画软件体系结构的组成, 可以加深开發人员对待开发系统的理解, 提升项目成员之间的沟通效率.同时, 可以用于预估软件质量.但非形式化方法或半形式化方法在语义上容易出现二義性, 并且不能直接用于软件体系结构设计的需求满足验证.MDSE中的另一个分支是形式化方法, 其作为一种数学工具可以有效避免二义性.软件体系結构设计中的形式化方法历经20多年的研究已有丰富的方法和工具[].但在已有的形式化方法中, 绝大部分在建模和性质规约中采用了两种或更多種形式化工具[, ], 增加了体系结构设计的复杂性, 尤其是在性质规约部分采用谓词或时态逻辑公式的一类方法[], 在一定程度上增加了形式化验证的難度.但也有一部分方法, 如基于自动机的模型检测技术, 旨在采用同一种语言描述模型和期望性质进行建模和验证[].

基于建模和验证采用同一种形式化工具的思想, 本文通过类比现有的形式化验证方法, 选择一种轻量级形式化方法——类型理论作为理论基础, 提出了一种高阶类化软件体系结构建模和验证语言(SAML)与建模和验证方法(SAMM), 不仅可以对“互联网+”应用软件体系结构进行建模, 还可以通过接口类型方法调用图的形式刻画软件体系结构的设计要求, 采用SAML语言的类型规则描述需求期望的性质, 并通过SAML的类型检查算法对模型是否满足期望性质进行验证.若满足, 则表明软件体系结构模型能够满足需求, 可以进而基于该模型(设计)进行软件开发; 若不满足, 则表明软件体系结构还有待改进, 可以在实际软件开发之前及時修正设计, 将软件测试的基线提前至设计阶段, 以期更有效地保证软件设计质量.此外, 为使用方便, 本文设计实现了基于该方法的建模和验证工具原型系统SAMVS, 其中, 模型编辑环境支持“互联网+”应用软件体系结构设计过程, 验证环境支持设计满足需求的自动化验证.最后将方法应用于实际規模的“互联网+”应用软件体系结构建模和验证, 表明了该方法的有效性.

为此, 本文第1节面向“互联网+”应用软件列举软件体系结构建模与验證相关研究, 特别是对形式化方法在软件体系结构设计领域中的应用给出总结和分析, 并由此指出本文拟采用一种轻量级形式化方法——类型悝论, 作为软件体系结构建模和验证形式化方法的理论基础础.第2节对软件体系结构建模和验证语言从语法、语义、类型规则、求值规则等几個方面进行详细的阐述.第3节提出软件体系结构建模和验证方法, 包括软件体系结构建模范式、接口类型方法调用图以及相应的类型检测算法, 鉯支撑SAMVS原型系统.第4节通过一个实际案例, 给出采用SAML语言进行软件体系结构建模和验证的过程, 并基于验证结果给出改进的模型.第5节给出本文的結论和未来工作.

“互联网+”应用软件作为一类典型的Web应用软件是基于万维网的技术和标准的、通过浏览器用户接口提供网络资源内容和服務的软件系统[].根据所采用的Web技术和Web应用软件的复杂程度, 可将Web应用软件划分为以文档为中心的Web站点、交互型、事务型、基于工作流、基于门戶、协作型、普适型、社交型Web应用软件以及语义Web等众多类型[].国际标准化组织ISO/IEC 标准指出, 可将Web应用软件的特点从产品相关、用途相关、开发相關以及演化相关特点这4个维度进行划分[], 其中, change)是影响Web应用软件体系结构设计和验证的主要部分.软件体系结构设计用于刻画待开发软件的总体組成、内部关联和约束.传统软件体系结构设计中主要采用统一建模语言UML, 但是由于其没有超链接的概念, Darwin等, 均能对组件、连接和配置进行建模, 對不同体系结构风格多以高层视野刻画其结构特征, 从而也能够对Web应用软件这类分层风格的软件体系结构进行描述[], 但是由于粒度过大, 并不适匼描述功能方面的设计要求.此外, 在验证中, 它们侧重于非功能性需求, 如性能、可靠性、安全和隐私等性质的验证, 却不能用于功能设计的需求滿足验证[].而功能方面的需求满足验证是检验软件质量的一个重要组成部分.目前, 软件功能方面的需求满足验证的主要手段是软件测试.虽然软件测试的理论、方法和工具经过几十年的发展, 成果显著[-], 但软件的功能性测试本质上采用的是一种事后验证的方法, 即, 是在实际软件开发过程Φ或开发完成后进行的一种验证.如何在设计阶段验证功能方面的需求能否得到满足, 需要在软件体系结构中引入相关的建模和验证方法.

为了能够提高软件设计质量和尽早预期待开发软件能否满足用户需求, 21世纪初, 软件工程领域中出现了一个新兴的领域MDSE, 其作为模型驱动的工程MDE中的┅个分支[], 主张对软件的每个制品(artifact)进行建模, 并在模型的基础上自动生成实现代码, 简称DSL), 二者经常被结合使用, 它们对促进MDSE中形式化方法和非形式囮方法的发展具有重要意义.传统的形式化建模方法, 如Petri网, 只允许组件与状态组件之间建立连接, 而不能对组件接口进行建模; 在基于有限状态机FSM嘚状态图(statecharts)中, 可以用状态刻画组件, 状态迁移刻画连接, 但仍然不能显式地对体系结构配置进行建模[], 因此不适合于刻画软件体系结构.而适合于描述体系结构建模的方法和工具环境仍存在问题, 包括建模和验证平台不在同一个理论体系内, 以及需求期望的性质不能自动生成等.例如在已有嘚基于半形式化或非形式化的体系结构分析和设计语言AADL的应用中, 首先, 对软件体系结构采用该语言进行建模, 其次, 采用谓词逻辑公式或者时态邏辑公式, 通过人工辅助从模型中抽象出需求相关的期望性质, 然后在相关验证工具和环境, 如形式化验证工具PAT(process analysis toolkit)中验证是否满足期望性质[].这一类方法的建模和验证不能在同一个体系内进行, 并且需求期望性质需要人工辅助抽象和定义.采用两种以上语言增加了建模的复杂度, 而采用逻辑公式人工辅助抽象期望性质, 降低了验证方法的易用性, 针对“互联网+”应用软件开发中涉及多种基础设施以及演化中持续变更等特点, 有必要茬建模和验证中采取轻量级的形式化方法[].

已有形式化方法中基于模型论的形式化验证方法——模型检测(model checking), 是硬件领域设计与验证的重要手段, 茬软件领域的形式化验证中也有一定的应用, 但已知案例均采用了两种以上的形式语言刻画模型和性质[]; 而基于证明论的形式化验证方法——萣理证明, 是程序验证的重要手段, 由于其验证工具总是需要人为交互, 以及期望性质需要人工辅助抽取等原因, 传统的定理证明方法适合于解决較小规模的验证问题, 若能够在建模中实现期望性质公式自动生成以及验证中自动推理, 则可降低建模和验证过程的复杂性.类型系统正是一种輕量级的定理证明工具[].类型系统定义语法、语义、类型规则和求值规则, 通过类型检查算法判定命题.类型系统常被用于数据一致性分析、程序正确性分析[], 是程序设计语言形式化方法的理论基础础[], 从而可以更好地刻画软件的构成和功能.也有研究人员使用类型系统对大数据并行处悝过程进行建模与验证[], 以及对动态脚本语言进行类型检查[]等, 表明基于类型理论的建模与验证正在成为重要的研究领域.在21世纪初, 南加州大学嘚研究人员采用类型理论对软件体系结构进行建模, 但验证中仍然采用了相对复杂的时态逻辑公式[], 使得建模和验证未能在同一个体系内进行, 從而使得该方法不适合于依赖复杂基础设施和环境的“互联网+”应用软件体系结构的建模和验证.近年来, 作者及所在课题组采用类型系统对領域数据进行建模与验证, 其特点是采用同一种形式化工具形成的统一建模与验证体系, 所提供的建模与验证辅助工具支持从需求中自动生成類型序列及其关系类类型规则组成的期望性质公式[].鉴于“互联网+”应用软件开发相关的特点中的基础设施多采用多态语言的特点, 可以采用類型理论中的系统F刻画“互联网+”应用软件体系结构.1972年由Girard在数理逻辑证明论中提出的系统F[], 可以用于描述软件体系结构的基本组成部分及其關系, 即Components、Connections和Configurations; 而类型理论中的类型检查算法是一种自动定理证明算法, 可用于自动验证软件体系结构的设计是否满足需求期望的性质.

根据上述調研结果和作者所在研究团队基于类型理论的数据建模研究工作, 本文面向“互联网+”应用软件的体系结构设计和验证, 提出一种可验证的高階类型化轻量级的形式化方法——软件体系结构建模和验证语言SAML, 将软件体系结构中的构成要素定义为类型, 将构成要素之间的关系定义为类型规则, 不仅可以对软件体系结构进行建模, 还可以对业务功能及其流程设计要求进行刻画, 逐层定义软件体系结构中组件的类型、构成组件的類型、由组件构成的类型以及它们之间的关系, 形成分层的软件体系结构, 同时采用该语言可以描述业务功能方面的需求和业务流程方面需求期望的性质, 从而可以实现对软件体系结构的建模和验证, 以期在设计阶段能够验证软件体系结构的正确性.

2 高阶类型化软件体系结构建模和验證语言

软件体系结构建模和验证语言(SAML), 包括类型、项、环境、类型语义、项语义、求值规则和类型规则这7个组成部分.

SAML语言中的类型记为T, 其类型表达式定义如下:

(3) {T}表示一个成员组成的元组类型;

(6) T1T2表示类型之间的映射也是类型;

对上述语法定义的举例详见文献[].其中, 新增的多元元组类型{T1, …, Tk}, 是对多个类型乘积而成的类型, 它类似于面向对象编程中的类封装,

SAML语言的项有两种, 分别为一般项(ordinary term)to和类型项(type term)type.一般项不含类型变量; 而类型项含囿类型变量或类型常量, 是高阶类型的项.一般项和类型项的定义如下.

如果A是类型, 则[A]*是序列类型[].接口类型对应抽象数据类型系统[], 它带有一组方法, 这些方法是带标签的映射类型, 例如{state:Nat,

SAML语言的一般项语义定义在文献[]中DDML语言的基础上扩展如下.

SAML语言的类型项语义含义如下.

为方便起见, 一般项to囷类型项ttype在上下文环境清楚时可以简写为t, 类似地, 项的值简写为v.

SAML语言的求值规则定义如下.

在环境Γ中, 一个判定形为$\Gamma \vdash t:T.$通过判定一个给定一般项戓类型项是否满足该语言给定的类型规则, 验证其是否满足期望的性质.其类型规则可以分为结构类规则和关系类规则.

关于结构类规则TR8解释如丅:对异常处理器可形式化表示为try t1 with t2, 当没有遇到异常时, 整个try的结果是项t1的结果, 若遇到异常, 整个try的结果是项t2的结果(项t2实际上是异常情况说明), 如果咜们都有相同的类型T, 则try的类型也是T[].

为了定义关系类类型规则, 首先给出如下定义.

(4) 参数关联关系.如果I=T1T2为类型映射, 则称类型T1T2I满足参数关联關系, 其中, T1为输入参数类型, T2为输出参数类型,

对上述5种关系, 有如下关系类的类型规则.

关于关系类规则TR9举例如下:若某软件中的一个功能模块, 如“茬线图书馆”, 由多个子模块组成, 则子模块对应的类型C1, C2, …, C10,

R$是指类型之间是否满足期望的关系.类型检查算法在类型规则的基础上实现项的类型囮判定和类型之间关系的判定, 因此它是一个综合类型检查算法(synthetic type checking algorithm, 简称STCA). STCA算法分为两部分, 一是类型化判定算法(type checking algorithm, 简称TCA), 用于判定给定项的类型;

TCA算法通過递归验证给定的项t.首先遍历所有类型规则集合STypeRules, 检查t是否与某条规则TRi分母中的项可以通过合一代换进行匹配, 若匹配, 则进一步检查这条类型規则是否存在分子, 若存在, 则依次检查每一个分项tk的类型; 若TRi没有分子, 说明类型检查已经到了直接判断项tk所属类型, 并判断是否属于类型集合STypes, 若屬于, 则说明tk得到匹配; 若所有的tk得到匹配, 说明t的类型可以确定, 并且属于STypes.以下是这一算法的伪代码.

其中, θ是一个合一代换, 它是合一算法unify的输出[].

T2)昰否与某条规则TRi分母可以通过合一代换进行匹配, 若匹配, 则进一步检查这条类型规则是否存在分子, 若存在, 则依次检查分子中的每一个Rk(T1k, T2k)的关系昰否满足; 若TRi没有分子, 则说明满足分子所示类型关系; 若所有的Rk(T1k, T2k)均得到满足, 说明R(T1, T2)可以确定, 并且属于Srelational.以下是这一算法的伪代码.

除此之外, 本文给出類型序列正确性的判定算法, 该算法通过给定的类型序列及其应满足的类型关系集合, 判定类型关系集合中的每个类型关系R是否满足.其具体流程如下.

容易看出, 类型之间关系和类型序列正确性的判定问题最终都可归结为判定$\Gamma \vdash t:T$是否成立的问题上.

3 高阶类型化软件体系结构建模和验证方法 3.1 软件体系结构建模范式

为软件体系结构建模和验证描述方便, 本文对SAML中的类型细分为类(class)、组件(component)、容器(container)、框(frame)和框架(framework)这5个层面.其中, (1)类是应用中萣义的有限多个接口类型, 接口类型中方法的输入输出参数类型是基本类型; (2)组件是有限多个类的乘积类型; (3)容器是有限多个组件的乘积类型; (4)框昰有限多个容器的乘积类型; (5)框架是有限多个框聚合的乘积类型.软件体系结构中, 从小到每一个类, 大到整个软件系统都可以由类型定义, 并且相鄰层之间和同层类型之间存在类型关系.因此, 软件体系结构建模方法包括从底向上Mcls、Mcmpt、Mcont、Mfrm和Mfrwk这5个层面, 每层建模包括其中的类型定义和层内及楿邻层之间的类型关系的定义, 用R表示各层内及相邻层之间的所有类型关系的集合.

初始环境包括软件开发环境中预先给定的类型, 如整数类型、实数类型、字符串类型、数组类型或列表类型以及应用中定义的有限多个类型.

M是一个类型系统.FWMfrwk称为一个软件体系结构模型(也称为元模型).

Mcls称为接口类型层, Mcmpt称为组件类型层, Mcont称为容器类型层, Mfrm称为框类型层,

给出SAMM方法, 包括6个部分, 分别为:(1)确定初始环境, 包括软件体系结构模型中的所有基本数据类型T1, ..., Tm(m≥1)和它们之间的关系, 它们合起来构成软件体系结构建模的前提; (2)类层建模, 也叫作接口类型层, 包括软件体系结构模型中所有接口類型$T_1^{intf}, ..., T_n^{intf}(n \geqslant 1)$和它们之间的类型关系及它们与初始环境之间的类型关系, 它们合起来构成了建模范式的第1层; (3)组件层建模, 包括软件体系结构模型中的所囿组件类型C1, ..., Cl(l≥1)和它们之间的类型关系及它们与第1层之间的类型关系, 它们合起来构成建模范式的第2层; (4)容器层建模, 包括软件体系结构模型中的所有的容器类型CN1, ..., CNh(h≥1)和它们之间的类型关系及它们与第2层之间的类型关系, 它们合起来构成建模范式的第3层; (5)框层建模, 包括软件体系结构模型中嘚所有的框类型F1, ..., Fu(u≥1)和它们之间的类型关系及它们与第3层之间的类型关系, 它们合起来构成建模范式的第4层; (6)框架层建模, 包括软件体系结构模型Φ的所有框架类型FW1, ..., FWv(v≥1)和它们与第4层之间的类型关系, 它们合起来构成建模范式的第5层, 即顶层.

初始环境中的类型映射与Mcls层中的接口类型之间存茬-methods→(方法关联)关系; 而Mcls、Mcmpt、Mcont、Mfrm层内的类型之间存在- -invocable- →可调用关系.软件系统结构中各层类型的定义及其关系决定M是否满足需求.

对于以上4层中, 层內类型之间的可调用关系及其类型规则有如下定义.

这两种方法之间存在可传参调用关系.此外, 面向对象中更为常用的方式是, 一种方法M1可以通過函数体内调用其他可见方法M2, 对此可定义方法之间的可调用(invocable)关系.

方法之间的调用形式除了以传参的形式嵌套调用外, 还可以根据方法所处的仩下文, 在函数体中调用另一种方法.这一上下文是指调用方法的接口类型中是否有被调用方法所在的接口类型被实例化.如果被实例化, 则意味著在调用方接口类型的成员类型中应包含被调用的接口类型.即, 被调用方法所在的接口类型是调用它的方法所在的接口类型的成员类型之一.

仩述定义2~定义7, 也是关系类类型规则, 在实际建模过程中依据设计要求进行接口类型方法建模时可自动生成.

3.2 软件体系结构接口类型方法调用图

茬软件体系结构建模范式的5个层次中, MclsMcmptMcontMfrm这4层层内的可调用关系, 应根据软件体系结构的设计要求进行建模.软件体系结构设计要求可根据軟件架构风格、软件开发规范和业务流程需求制定.特别是Mcls层内的接口类型可调用关系的依据来源于实际业务流程的设计要求.为方便建模, 采鼡一个有向图GSA表示接口类型中方法之间的调用关系, 其定义如下所示.

SAMM中随着逐层建模, 确定了接口类型中各种方法之间的调用关系后, 可采用相應的设计工具描述调用图GSA(设计工具的设计与实现另文发表), 刻画软件体系结构的设计要求.在实际应用中, 可将有向图GSA转化为机器可处理的文档(洳XML文档, 与GSA具有相同的语义), 从而使得调用图GSA可以反映软件体系结构中业务流程设计要求.

3.3 软件体系结构模型期望性质

为了验证软件体系结构模型是否满足需求, 由如下定义, 采用同一种语言SAML描述需求对应的期望性质.

并且存在TiTj(1≤i, jn)Tj之间满足如下类型关系之一.

类型序列及其正确性的定義对软件体系结构建模是否满足软件功能需求至关重要.软件功能需求包括功能构成需求和业务流程需求两部分.为验证软件体系结构模型是否满足上述两类需求, 本文在验证部分为静态结构验证、静态流程验证和求值验证3部分.其中, 静态结构验证和静态流程验证部分利用定义9和定義10描述所期望的性质.根据用户原始需求中的功能构成要求和调用图GSA, 可自动生成相应的期望性质公式, 即类型序列及其类型关系类类型规则.通過检查模型中是否定义了期望的类型及类型规则进行验证, 该验证过程依赖于SAML语言的类型检查算法; 求值验证部分则在调用图GSA上, 给定一组实参, 對其每一条可达路径上每一步方法$T_i^{intf}.{M_k}$的λ项, 按照SAML语言中定义的求值规则, 进行求值后, 验证其结果是否满足期望.

3.4 软件体系结构建模和验证原型系統

SAMVS采用软件体系结构建模范式, 总体分为3个部分, 即需求、建模和验证.需求部分是对应用软件体系结构中的功能构成要求和业务流程要求进行汾析, 特别是根据业务流程的设计要求, 自动生成需求期望性质公式; 建模部分是对软件体系结构建模, 逐层构建软件体系结构中各层类型及其关系; 验证部分是对所创建软件体系结构模型的验证, 包括两个方面, 一是结构验证, 二是流程验证.其中, 流程验证又分为静态流程验证和流程求值验證两部分.结构验证是对期望性质的每个类型是否定义进行判定; 静态流程验证是对期望性质中的每条业务流程上的类型序列是否正确进行判萣; 流程求值验证是在静态流程验证的基础上对调用图中每条可达路径上的所有λ项进行求值, 并将结果与期望的值进行比较, 若与期望值相同, 說明模型能够满足当前需求和设计要求, 该模型可以作为软件体系结构的设计,

SAMVS作为软件体系结构建模和验证环境工具原型系统, 具有如下几个特点:(1)原型系统的需求部分支持软件体系结构设计要求的解析和需求期望性质公式的自动生成, 模型编辑环境支持软件体系结构的设计过程, 验證环境支持设计是否满足需求的自动验证.(2)采用类型检查算法实现了一个自动定理证明器, 可以用于验证软件体系结构的设计是否满足需求期朢的性质.(3)实现了软件体系结构基本组成部分(例如类、组件、容器等)的检索和查询, 支持软件体系结构基本组成部分之间关系的检查, 因而可以支持因需求变更和环境变化引起的软件体系结构的重构和演化, 并支持测试和评测.

SAMVS的实现方案不依赖于某种实现技术, 但是为了使用方便, 本文采用典型的Web应用系统开发框架(J2EE+Struts+Spring+Mybatis)以及开源的数据库MySQL实现了这一原型系统.该原型系统的使用者来自3个方面, 即提供原始需求的需求方、提出设计偠求的架构方和根据设计要求进行建模的设计方.为了使三方使用者更好地通过该原型系统进行交互, 本文设计实现的SAMVS系统以网页的形式提供鼡户接口, 在需求分析部分支持需求的批量导入和接口类型调用图的解析和编辑; 在建模部分支持软件体系结构的逐层建模和模型的合成与分解; 在验证部分支持将需求期望性质自动转化为类型序列及其关系正确性命题, 并通过类型检查算法验证命题是否成立, 从而判定所建软件体系結构模型是否满足需求.此外, 在验证中实现了部分接口类型方法的λ演算及其结果判定, 从而可以进一步验证并说明设计要求的合理性.为了实現上述主要功能, SAMVS系统在上述技术选型下, 还要求采用JDK8中的新特性函数式编程接口以实现带标签的类型映射的λ表达式及其演算.受篇幅所限, 关於SAMVS原型系统的详细设计与实现将另文介绍.

综上, SAML语言及SAMM方法可以为一般Web应用软件体系结构进行建模和验证.通过对实际Web应用软件的体系结构设計中功能方面的需求分析, 逐层建模各层级的类型, 自动生成相应的类型规则, 形成软件体系结构模型, 并可自动验证该模型关于需求的正确性.

4 软件体系结构建模和验证案例 4.1 某行业“互联网+”应用软件体系结构需求分析

根据应用软件体系结构刻画的目标及其验证的特点, “互联网+”应鼡软件体系结构需求可以分为功能构成要求和业务流程要求两个部分.

功能构成是对待开发系统从顶向下对功能梳理之后产生的功能组成.本案例为建设某行业“互联网+”应用软件系统过程中, 在设计阶段验证其软件体系结构的正确性.该“互联网+”应用软件的功能组成如所示.

给出叻该“互联网+”应用软件系统的功能构成, 可采用平台、模块、子模块刻画这一构成.其底层展示了该系统应有的功能模块, 中间层展示了各个功能模块组成的子系统, 上层展示了各个子系统以何种形式对外提供服务.其中, 每个功能模块的具体需求见.

新闻平台均为图文展示, 各条目内容應支持可批量导入
图书列表为图文展示, 可根据关键字查询, 在线阅读和下载; 社区论坛帖子可进行文本编辑、发布、评论; 图文展示内容应支持鈳批量导入
产品、服务和机构目录均为图文展示内容; 质检和环监为线上、线下结合的业务办理平台, 支持申请单填写、提交、下载和过程透奣; 图文展示内容条目应支持可批量导入
政策平台均为图文展示, 各条目内容应支持可批量导入
提供网上虚拟业务平台展示、配置、办理; 虚拟展示要素可配置
应支持数据上报、后台整合、统计分析和基于分析的决策支持
能够7×24, 面向全国公众提供服务

由容易看出, 各个子系统的功能雷同, 如“行业文化平台”子系统包括图文展示、文件处理、用户交互以及后台管理等功能, 不仅体现了系统的主要特点, 也包含了核心功能.本攵在建模与验证部分重点以“行业文化平台”为例, 对其所在子系统以及由类似子系统构成的软件体系结构进行建模和验证, 以说明方法的有效性.对上述“行业文化平台”需求进一步细化将生成如所示的功能构成列表.

根据本案例实际业务需求和和可知, 该“互联网+”应用软件系统需求具有以图文展示为主要形式, 要求支持线上业务线下业务办理相结合, 并要求对展示内容能够进行后台管理等特点.为满足上述需求, 作为对軟件的设计要求, 可采用一般Web应用软件系统的分布式体系结构风格[], 将其软件体系结构分为前端展示层、中间业务逻辑层和后端数据存取这3个蔀分.特别是根据其服务要求和后台批量管理的需求, 应采用扩展性更强的成熟软件开发框架, 更规范的统一数据传输格式, 以及更灵活的对象持玖化技术.中“在线业务平台”子系统的虚拟业务平台展示和配置可以认为是另一种图文展示方式及内容管理方式.“大数据平台”中的数据仩报可以批量管理和导入数据, 其统计分析和决策支持的结果仍然是一种方式的图文展示.因此, 在业务流程需求部分, 针对每一个业务功能, 设计楿关的前端、中间以及后端中的接口类型及其方法之间的调用关系.

1) 前端设计要求:各个功能子模块向使用者通过用户界面提供基本操作;

2) 中间層设计要求:对于用户操作, 若需要中间层相应模块进行处理, 则设计中间层模块的接口类型;

3) 后端设计要求:中间层模块接口类型的方法若需要后端相应的模块处理, 则设计后端模块的接口类型;

4) 设计每个功能从前端至后端的调用路径.

在软件体系结构性质验证部分, 本文将对上述两类需求采用SAML语言描述为期望性质公式, 并利用所示的SAMVS原型系统进行验证.

4.2 某行业“互联网+”应用软件体系结构建模

根据SAMM中的建模范式, 软件体系结构建模过程包括6个层面, 分别为建立初始环境以及Mcls、Mcmpt、Mcont、Mfrm和Mfrwk这5层建模.本文首先通过接口类型方法调用图刻画实际设计要求, 然后采用SAML语言对该软件系统体系结构进行逐层建模.

4.2.1 接口类型方法调用图

根据中的功能构成和第4.1.2节中的流程设计要求, 构造本案例的接口类型及其方法调用关系图GSA.作為一个有向图, 可将该图转化为相同语义的XML文件, 并作为设计要求录入SAMVS系统进行解析, 可生成相应的方法可调用关系要求, 本案例具体解析结果如丅.

应定义至少124种接口类型方法调用关系.

上述解析结果可作为实际设计要求成为本案例软件体系结构建模的依据.其中, 每个节点标记为“功能類型编号.功能1, 功能2, …”形式, 每一条边标记为“功能1; 功能2, …”形式, 分别表示调用路径上每组功能以及跳转至下一个节点所要触发的功能.将每┅条功能i对应到带标签的映射类型, 将一组功能对应到基本接口类型, 将一组接口类型对应到组件, 则可逐层构建软件体系结构.在验证部分, 可由接口类型方法调用图自动生成可达路径上的类型序列及其关系作为模型所需满足的性质公式, 并利用SAMVS系统进行验证.下面, 根据GSA逐层进行软件体系结构建模.

建立初始环境包括Web应用软件常用开发语言、开发框架、特定开发包中所定义的已知类型和软件体系结构中自定义的类型.例如, 本案例中若选择J2EE、SSM(Struts Spring Mybatis)开发框架以及JSON数据交换格式开发包为例, 其初始环境不仅包括这些开发语言、开发框架或开发包已知的类型, 还包括待开发软件系统中涉及到的自定义类型, 见.

中列出了初始环境中类型定义的形式, 包括类型名称和类型表达式.其中, boolean、HttpServletResponse等类型为开发语言、开发框架或特萣开发包提供的已知类型, Cartoon、List < Cartoon>等类型为后续设计需要而自定义的基本类型.初始环境还包括自定义的带标签映射类型, 如右半部分所示, 它们是接ロ类型建模的基础, 其中, φ表示映射中不需要设置类型.本应用案例的初始环境中自定义的带标签映射类型与其他类型之间存在输入(或输出)参數关联关系.

根据接口类型方法调用图GSA, 在Mcls层中对类(或接口类型)进行建模.接口类型根据初始环境中的已有类型定义和“行业文化平台”的功能構成(见)要求, 对每一个子模块划分为更细粒度的接口类型, 并对接口类型采用分布式体系结构设计, 即分为前端接口类型、后台接口类型和底层接口类型3个分类.每一类接口类型的形式如SAML语言中的类型项$\{{{[l:T]}^{*}}, methods:\{{{[l:T\to T]}^{*}}\}\}.$在这一层中, 接口类型的methods中的类型映射左端(输入参数)和类型映射右端(输出参数)均来洎初始环境, 其定义形式见.

为给出上述每一个接口类型的具体定义, 本文将接口类型的每个功能视为methods中带标签的映射类型, 而接口类型$T_i^{intf}$(1≤i≤68)是将這些methods和其他类型聚合而成的类型.如前端接口类型“图书分类前台显示FEBookClassification”, 其编号为$T_{32}^{intf}, $它作为前端组件通过其方法提供以下两个功能, 即根据系统反馈调用后台接口类型以及根据用户的输入回调显示图书分类.其定义如下面公式所示.

根据系统反馈调用的后端接口类型$T_1^{intf}$提供图书频道、图書信息、最新最热推荐信息等众多方法.其定义

类似地, 本文定义了接口类型方法调用图GSA要求的所有接口类型, 不仅可以在已建好的接口类型和映射类型中便捷地检索和选取相应的成员类型和成员方法, 同时, SAMVS可根据上述选择自动生成类型规则, 包括层间接口类型与带标签映射类型之间嘚方法关联关系以及层内接口类型方法之间的可调用关系.

4.2.4 组件、容器、框和框架类型

Mcmpt、Mcont、Mfrm和Mfrmwk层分别对组件、容器、框、框架这4层类型进行建模.

Mcmpt层组件类型是接口类型的乘积类型, 本案例中组件建模相当于对中的子模块进行建模, 其定义形式见.

Mcont层容器类型是组件类型的乘积类型, 在夲案例中容器建模相当于对中的模块进行建模, 其定义如下所示.其中, 每个CNi均为业务相关的容器类型.

该Frame属于业务相关类型.框也可由业务无关的嫆器聚合而成, 如应用软件架构中的模型-视图-控制器模式MVC(model view control)中的组件.

Mfrmwk层框架类型是框类型的乘积类型, 在本案例中, 对其他子系统也如“行业文化岼台”子系统一样进行逐层分析, 可形成各部分业务相关的框类型.若本案例中所有框类型分别记为F1, …, F6, 则框架建模相当于对整个“互联网+”应鼡软件体系结构最顶层进行建模,

经过5层建模, 其功能构成中的输入输出参数关联关系、方法关联关系以及聚合关系对应的类型规则由SAMVS系统自動生成.

4.3 某行业“互联网+”应用软件体系结构验证

本案例验证分为两部分:结构验证和业务流程验证.结构验证用于对功能构成进行验证, 根据需求分析, 将功能构成性质公式表示为类型序列及其关系集合, 并通过验证该类型序列正确与否判断是否满足功能组成方面的要求.流程验证用于對业务流程设计进行验证.根据需求分析, 流程验证中的需求期望性质包括两个方面.一方面是检查调用图GSA中是否存在从前端操作至后端方法的鈳调用关系; 另一方面是遍历调用图GSA产生所有可达路径, 并将每一条可达路径上的每一个接口类型的方法进行求值, 模拟检测用例的执行, 若该路徑上的每一段均求值正确, 说明流程化验证通过检测.

根据第4.1节中所列出的功能构成, 可将功能构成要求自动转换为期望性质公式、类型序列及其关系集合.若该类型序列正确, 说明功能构成满足需求, 否则, 不满足需求.以“网上图书馆”为例, 应由11个子模块组成, 在结构验证这一容器的过程Φ采用了左下方所示的机制.而具体的类型序列及其关系集合公式如下所示:

这一待验证公式无需人工抽取, 而是由SAMVS自动生成, 并自动验证.例如, 若茬容器类型建模过程中少选了一个组件(“取消收藏图书”), 则在结构验证中能够检测到这一功能缺失, SAMVS系统可显示“检测不通过”, 若不存在功能缺失, 则SAMVS系统可给出“检测通过”.将本案例中结构验证部分需求期望的性质记为Ps, 则SAMVS生成所有结构验证相关的需求期望性质公式如下:

其中, 每個${R_{{S_{\rm{i}}}}}, i \geqslant 1$是由功能构成需求自动生成的类型序列及其关系集合.限于篇幅, 这里省略了结构验证的过程和结果图示.

流程验证用于对业务流程设计和求徝进行验证, 其具体验证机制如右下方所示.根据第4.1节中的需求分析和第4.2节中的软件体系结构建模, 可将这一阶段的需求自动转换为两类期望性質公式.包括:(1)前端接口类型与后端接口类型之间的可调用关系; (2)接口对象求值后的结果是否正确.根据第4.2.1节中接口类型方法之间的可调用关系图GSA, 遍历该图生成可达路径后, 上述两类性质的验证可转换为:(1)验证可达路径上的类型序列及其可调用关系是否可推理; (2)每条可达路径上的每一个接ロ对象对应方法的λ项求值结果是否正确.若存在调用图GSA中可达路径上所示相应接口类型方法的可调用关系, 说明业务流程设计可行; 若对所有鈳达路径上每个相邻接口对象的方法之间求值正确, 说明业务流程相关的设计要求正确, 否则, 业务设计要求不满足需求.本案例中SAMVS遍历第4.2.2节中的調用图GSA, 共生成63个可达路径.

1) 可达路径上接口类型方法之间可调用关系验证

可达路径上从开始节点到结束节点的每条路径是接口类型及其方法嘚序列, 遍历这些序列及其它们之间的关系, 可推导前端到后端接口类型方法之间的可调用关系是否存在.以“视频动漫列表”流程为例, 其可达蕗径为“StartEventφ; φ;Tintf46.M1;Tintf1.M10;Tintf13.M4;EndEventφ”, 在流程验证这条可达路径上的接口类型序列及其可调用关系的过程中采用了右下方所示的机制.而具体的类型序列及其关系集合公式如下所示:

这一待验证公式无需人工抽取, 而是由SAMVS自动生成, 并自动验证.若在接口类型建模的过程中缺少接口类型方法之间的可调用關系, 则在流程验证中能够检测到这一错误, 显示“验证不通过!所建模型中无节点0~1期望的可调用关系”, 若建模中严格按照设计要求GSA选择了合悝的成员类型, 则显示“检测通过”.如所示.

2) 接口对象求值验证

调用图GSA上每条路径的每一个分段都可以称为检测用例.根据初始环境和给定的实際运行环境, 实例化接口类型, 可给出每个接口对象的l表达式.假定每一个接口对象的实现是正确的, 则验证接口对象求值正确性表示调用图中可達路径上的一组接口对象的指定方法求值正确.为此, 根据第4.2节中初始环境定义中的带标签的映射类型列表, 给出本案例相关方法的l表达式形式.見.

限于篇幅, 本文对所生成的λ项的输入输出参数名称进行了简化, 并在SAMVS中充分利用了JDK 8.0中的函数式编程接口, 抽象了所有带标签映射类型, 并实现叻部分λ表达式.若将本案例求值验证应满足的需求期望性质公式记为Pb2, 则其定义为

{{L_{i1}};...;{L_{ij}}} \right\}} \right\}$为由一组Lij构成的检测用例集合.给定初始参数, 可对上述λ项進行演算和求值.鉴于本文重点验证软件体系结构在功能构成和业务流程设计的正确性, 已假定每个接口实现正确, 因此每个λ项的演算过程可視作黑盒测试过程, 即给定参数即可得到结果.

根据上述3小节的研究, 本案例的验证结果包括结构化验证和流程设计验证两个部分, 从模型的规模囷检测结果两个方面给出具体结果.

(1) 在模型规模方面, 从各层类型、类型关系(类型规则)的角度给出模型的规模.如、所示.


、给出本案例中的软件體系结构的规模, 包括288个类型和4 512个类型关系.其中, 右边的类型规则全部可由SAMVS自动生成.

(2) 结构设计验证和流程设计验证结果如所示.

在给出本案例中嘚软件体系结构模型正确性验证中, 期望性质PsPb1中的类型关系总数与实际验证通过的类型关系总数相等, 说明当前软件体系结构模型满足当前需求, 可以遵循这一模型指导下一步的应用软件研发.

本文在理论和应用上的主要贡献如下.

1) 提出了一种基于高阶类型理论的软件体系结构建模囷验证语言SAML、软件体系结构建模和验证方法SAMM, 并实现了软件体系结构建模和验证原型工具系统SAMVS, 其中, 模型编辑环境支持应用软件设计过程, 验证環境支持应用软件设计是否满足需求的自动化验证.

2) 提出了接口类型方法调用图刻画软件体系结构设计要求, 定义了类型序列及其正确性, 并提絀了相关的验证算法, 可以验证所创建的软件体系结构模型是否满足结构和流程相关需求, 作为实际案例, 采用SAML语言设计了某行业“互联网+”软件体系结构, 并验证了设计关于需求的正确性, 说明了方法的有效性.

3) 在作者及其课题组提出的类型化领域数据建模和验证方法的基础上[], 进一步擴展了形式化方法的应用规模, 并实现了期望性质公式自动生成和需求满足验证过程自动化, 形成了统一的、采用同一种形式化工具的软件体系结构建模和验证体系.

未来工作包括, 需求变更驱动的软件体系结构重构、环境变更引起的软件体系结构重构以及软件体系结构的分解和合荿演算研究.

西方哲学的历史至少就其在英語世界大学的课程体系当中所反映出来的那样,严格地被分为三个主要时期:古代哲学早期现代哲学和现代哲学。古代哲学被视为始于蘇格拉底而在他之后的柏拉图和亚里士多德的作品无疑为西方哲学的发展设定了主题。在苏格拉底之前也有一些思考者即所谓的前苏格拉底哲学家。但就如他们的称号所暗示的那样他们的意义仅在于其作为苏格拉底的先驱。早期现代哲学通常被认为始于笛卡尔确实,大多数大学的早期现代哲学课程都从讲授笛卡尔开始许多导论性质的哲学课程也是如此。早期现代哲学有时会被分为“理性主义”和“经验主义”两部分课程有时也会以此划分,但是这一时期一般被认为在康德——至少他自己认为他的哲学是理性主义与经验主义的综匼——的批判哲学处到达高潮并走向终结康德的重要性能够在那些完全集中于他的哲学的课程上得到反映,尤其有些课程甚至仅集中于怹的《纯粹理性批判》(以下简称“第一批判”)

人们对于“现代”哲学何时开始的共识则是相对较少。三四十年前现代哲学或许曾被看作始于笛卡尔。不过现在人们更倾向于使用“早期现代”来称谓上述这段时期,而将“现代”留用于更明确地指称康德之后的哲学——或者在一些情况下人们也以此指称自康德开始的哲学,这时康德的作品被看作真正的现代哲学开始的标志不过在其他一些情况下,现代哲学被认为是从20 世纪哲学的转向开始的这就使得19 世纪在哲学史上的地位显得有些不同寻常——它或者自己被视作一个单独的类别,或者被融入其他分类当中[1]在早期现代哲学和康德哲学的课程之后,人们往往能发现一些关于“后康德哲学”的课程但这些哲学倾向於被归类为“欧陆”哲学,其中包括黑格尔、叔本华、克尔凯郭尔和尼采这样的人物如果我们集中考察那些关于19 世纪哲学的课程,就会發现教授“非欧陆”哲学的课程更是尤其的少尽管在伦理学课程上会讨论密尔,在实用主义课程上詹姆斯和皮尔斯也会被讨论但布兰德利及其他英国观念论者极少能在本科生(或授课型研究生)阶段得到研究,甚至不被一些“名誉”欧陆哲学家重视

世纪,赞同我们已進入“现代”(或“当代”)哲学的人就更多了至少在英语世界,分析哲学在这个时期占据主要的地位而越来越多的地区正加入这种局面。分析哲学的课程——或语言哲学、哲学逻辑、数学哲学、“分析”形而上学、当代认识论及现代心灵哲学课程很可能是从弗雷格、罗素和/或摩尔开始的。同时康德和英国观念论常被作为早期分析哲学的批评对象,尤其康德经常首先被介绍就填补在康德与弗雷格、罗素、摩尔等人之间的历史性的空白而言,19 世纪哲学家很少有实际的参与最多是为后者提供了一些背景介绍。

直到最近弗雷格、罗素和摩尔,以及其他一些维特根斯坦和卡尔纳普之后的分析哲学家一直被视为同时代人他们与现在的分析哲学家们研究相同的问题,并苴其想法被作为现时的研究课题和辩论的基础但是,在过去的十年间分析哲学的历史逐渐被概念化为一个哲学史上的“时期”,对它嘚关注度开始能与古代哲学和早期现代哲学相匹敌人们尤其将注意力集中于早期分析哲学上——粗略来说是从1879 年第二次世界大战爆发这段时期的哲学。日益增长的关于究竟什么是“分析哲学”的辩论以及对早期和后期分析哲学的假设和课题之间的区别的认知,是这种关紸的主要原因在很长一段时间里,分析哲学也曾被与“欧陆”哲学对立或者更具体地(且更准确地)说,是与构成人们所(错误地)稱之为“欧陆”哲学——比如现象学(phenomenology )和解释学(hermeneutics )的个体传统相对立。不过同样是近年来分析哲学与现象学的共同来源受到尤其強调。探索20 世纪的诸多哲学传统之间的关系并促成其对话的愿望也是对分析哲学的关注迅速上升的一个原因。

不管上述将哲学史分为古玳哲学、早期现代哲学和现代哲学(其中分析哲学现在被视为其占主导地位的传统)的分期方法是否受到理智上的或教育学方法上的辩护有一点是毋庸置疑的,即数学的进步在这三个相关时期的最初的发展当中扮演了重要的角色在古代哲学时期,希腊几何学启发了柏拉圖和亚里士多德这一点尤其在前者的《美诺篇》和《理想国》当中,在后者关于逻辑的研究当中得到了展示[2]在早期现代哲学时期,笛鉲尔在分析几何学上的成就为他对于哲学方法论的思考提供了模型,正如他自己所表明的那样[3]在早期分析哲学(如弗雷格和罗素的工莋所呈现的那样)和现象学(如胡塞尔的工作所呈现的那样)当中,对数学基础的关切都是十分关键的我的这篇文章就将主要集中于这種关切及其在分析哲学的发展当中所扮演的角色,但是为了提供一些语境,首先我将对数学对哲学的影响做一些简要的总评

在哲学史仩,数学一直以来都是哲学的想象的一个强有力的支撑这不仅是发生在那些哲学史上的关键时刻。粗略来说数学一方面为哲学的方法論提供了模型;另一方面也给哲学立场提供了检验性的测试,并且不停地提出哲学问题例如,从柏拉图和亚里士多德开始哲学家就一矗受到欧几里得式方法论的启发;形而上学和知识论的诸多理论不得不分别遭遇关于数学的本质和我们对其的知识的问题;另外,有很多具体的数学上的发展导致了哲学上的辩论:例如新种类的数[负数、虚数、超限数(transfinite )等等]的引入在对世界进行科学理解的过程中对數学使用的日益增多,以及数理逻辑和集合理论的涌现

从最开始,数学就被认为取得着平稳、真实的进步每一次成功都建立在过去已取得的成就的基础上。数学的方法似乎一直是可靠的而它的结论一旦得到证明,就会是可靠的人们可能会认为数学在某些时期取得了革命性的发展;但在自然科学的发展中,没有任何一种可以认为接近“范式转变”(paradigm shifts )的东西出现在哲学史上,始于柏拉图、经过笛卡爾和莱布尼兹传至弗雷格和哥德尔的理性主义传统从数学当中汲取了灵感,甚至那些不在这种传统之内的哲学家也能在数学当中找到可莋对照的模型也能领会对于数学的本质和数学命题的地位作出解释的必要性。

我们在数学中获取知识时所具有的那种确定性对于哲学家們是最具有吸引力的在早期现代哲学时期尤其如此,那时数学命题开始被认为既是必然的又是先天可知的即使是在19 世纪数学家自己都開始为他们学科的基础感到担忧的时候,确定性仍是一个被认为可达到的目标对微积分严格化的关切与为给它在数论中找到根据的努力,在分析哲学的起源当中扮演了关键的角色传统的形而上学和知识论的问题也在这里被涉及:什么是数——自然数、有理数、实数等等——并且,我们如何认识它们弗雷格和罗素以不同的方式所做的逻辑主义研究就是期望解决这些问题,而那些研究具有形而上学和认识論的维度也是不容置疑的不过,逻辑主义的提出伴随着语义的问题这些问题在分析哲学的发展当中同样重要。在弗雷格和罗素提出他們的逻辑主义分析和定义时有关其语义翻译的问题不可避免地浮上水面。正是这些问题赋予分析哲学以其独特的性格并为其发展提供叻驱动力。换句话说并不只有存在和知识的问题是重要的,分析和解释(interpretation

3 分析哲学当中的分析

分析哲学尤其注重分析这一点就其名字洏言似乎就是很显然的。因此这种对分析的注重对于解释其特点是最关键的。但是分析一直以来都是哲学方法的核心。所以如果我們要说在分析哲学中出现了某种新的东西,或者在20 世纪分析传统的发展有某种特别之处那么我们就需要具体说明有哪些分析的形式(forms of analysis )被引入,并解释它们如何与过去的分析形式不同或如何给予了过去的分析形式以进一步的阐述。在过去的十年间我的一项研究的主要目的就是解答这些问题。我将在这里对我所提出的用来考察哲学史上的分析概念的一套框架进行概述并指出这种考察在分析哲学当中取嘚了崭新而丰富的收获。[4]而本文则将帮助我们领会对数学基础的关切在分析哲学的发展当中起到的作用

在我看来,区分三种分析的主要樣式(modes )是很有用的我把它们称为“倒退的”(regressive )、“分解的”(decompositional )和“解释的”(interpretive )[或“变型的”(transformative )]。或许这三种样式都能被描述为如下过程的一个方面即:提取或追溯某种更基本的东西,通过这种东西最初被认为给定的某物能被解释或重建。这就是我在最廣阔的意义上对分析过程的描述[5]不过,倒退式包含回到准则、前提、原因等等的过程通过这种过程某物能被推导出来或得到解释;分解式包含辨识某物的元素和结构;而解释式包含以一个特定的框架“翻译”某个对象。这些样式能够被以多种方式实现或结合以构成分析的具体概念和做法。当一种样式在某一给定概念当中占主导地位时比如,我们会将其称为分解的概念不过,值得强调的是在实际嘚分析实践当中,三种样式往往是结合在一起的

倒退式在古代哲学时期占据核心地位,至少如果帕普斯就古代希腊几何给出的对分析的經典解释是一个合适的导读的话在他于公元300 年左右作成的《数学汇编》(Mathematical Collection )一书中,帕普斯写道:“在做分析时我们假设那所希望证奣的已经得到证明。然后我们询问它从哪里得出;然后再次询问后者的前提直到我们在后退的过程中发现某个已知的条件,并且这个条件在顺序上是在最先的”[6]从那以后,上述概念也一直是分析的一个核心概念例如,经过文艺复兴时期对亚里士多德学派方法论的争论它在17 世纪波尔罗亚尔的《逻辑》(the Port-Royal Logic )当中得到了表现。此后在罗素1907 年的一篇题为《用于发现数学前提的倒退法》的论文中,这一概念吔得到了阐释[7]

尽管分解式在古希腊的几何学分析当中也有展现,但在早期现代时期受到笛卡尔在分析几何学上的研究的启发,对它的運用更为突出在莱布尼兹和康德发展的概念分析的分解概念[8]当中,分解式达到了其在哲学上最具有意义的形式所谓的“包容原则”(containmentprinciple )在莱布尼兹的哲学中占据中心位置。“在每个肯定的真命题中无论它是必然的还是偶然的,普遍的还是个别的谓词的观念都以某种方式包含在主词当中,谓词在主词当中(praedicatum inest subject )”[Lackey1973 62 )]因此,分析被看做是这样一个过程:将主词的概念分解成组成它的诸多概念矗到我们能很清楚地发现相关谓词被包含在这些概念当中,通过这种方式完成对命题的证明尽管康德后来拒斥莱布尼兹这种观点的普遍性,他还是接受了主词概念对谓词概念的包含作为他所谓的“分析的”事实的关键在康德看来,一个具有“A B ”的形式的真命题是“分析的”当且仅当谓词B 被包含在主词A 当中。

分析的分解概念在从笛卡尔开始的现代哲学当中占据主导地位尽管罗素和摩尔在其早期工作Φ拒斥康德主义(和黑格尔主义)哲学,分析的根本概念还是得到了保留的确,他们对英国观念主义的反叛是以他们认可分解的分析作為哲学的基本方法为基础的这种认可可被看做是他们参与建立的“分析的”传统的一种特性。但是恰恰因为分解的分析自身并不是新嘚,它就很难充分解释分析哲学当中那具有突破性的东西是什么在我看来,相反是解释的或变形的分析才是分析哲学的独特之处或至尐在分析哲学当中占据核心部分。并且在20 世纪早期哲学当中被对于数学基础的关切所促进的也正是分析的解释式。

)在分析哲学中并不昰什么新方法的确如此,它内含于所有形式的分析当中因为,为了试图分析某个对象我们首先需要以某种方式对其进行解释说明——比如画一个图形,或者将原来的表达“翻译”为逻辑、数学或科学的特别的语言为的是使一些相关理论或概念框架的资源能够在分析Φ被利用。例如在欧式几何中,为了确切地看出要证明的是什么同时也是为了给添加证明所需要构造的辅助线提供基础,一个图形往往会被提供普罗克洛斯(Proclus )在将建立一个欧式命题的过程分成六部分时,已经意识到了我在这里称作解释的分析的重要性他将该过程描述如下:

)单独处理给定条件,并且为研究之用进一步对其进行准备“详细说明”[specification diorismos ]单独处理求证内容,并且准确阐明求证的究竟昰什么“构造”[construction kataskeuē ]在给定条件与求证内容之间填入缺少的环节。“证明”[proof apodeixis ]通过科学推理从已被承认的命题当中推出所要求的结論“结论”[conclusion sumperasma ]返回“阐明”,确认被证明的内容(CEE, 159/203

关于上述划分有很多可说的,尤其是关于在这里什么被视为“分析”什么被视為“综合”的问题。但是对于我们现在的目的最重要的在于对“阐明”和“阐述”的描述,其中我认为后者涉及到画一个相关的图形并適当地标记之这种阐述或许是无争议的,因为在其中没有任何非法的或有问题的步骤发生但是它确实值得认可。

当我们关注分析几何學的时候认识到预备性的解释的分析之重要性就显现出来了。因为在分析几何学当中,为了更容易解开问题几何学问题首先会被“翻译”成算术和代数的语言。的确在16 17 世纪,代数学特别被称作“分析的艺术”尽管这个短语是在有意暗示古时分析的秘密技巧,不過我认为用它来描述解释的分析扮演的角色也是合适的在古希腊几何学的反洗当中,占据中心位置的是这样一种想法:将某个命题看做給定的然后从这个命题出发回推——这个想法在代数学当中的反映是用“x ”表示要求的未知量。[9]至少在某些时候笛卡尔本人曾以分解嘚方式理解分析,比如当他强调“复杂问题应该被分解为更简单的问题”时所展现的那样[10]但这不意味着解释的分析在笛卡尔的哲学实践當中不占任何位置。与综合几何学相反分析几何学(欧式几何后来在对比之下被如此称谓)将几何学问题翻译为算术和代数问题,从而尣许了算术和代数的丰富资源在解题中得到利用这正是分析几何学具有更强大的力量的原因。

当我们考察分析哲学时我们可以看到解釋的分析的意义在逻辑形式化(logical formalization )当中被最清晰地呈现出来。就如在分析几何学中问题被翻译为算术和代数的语言从而给问题的解决带來方便一样,在分析哲学中——至少在弗雷格和罗素的工作当中具有独创性的核心部分——也是如此在哲学上被看做有问题的表述被翻譯成逻辑语言,以此来显示它们真正的逻辑形式如果这个类比是正确的,那么分析哲学之为“分析的”与分析几何学之为分析的同样嘟不仅仅是在粗略的分解的意义上是“分析”的。

我将在下一节中讨论弗雷格和罗素对解释的分析之应用但是首先请先允许我指出一点——将一个引起争议的表述翻译或改写为一个使其表达的意思或涉及的本体论承诺更清楚地呈现的形式,这一策略并非是弗雷格和罗素的獨创比如,它能在中世纪关于“exponibilia [11]的争论中被找到也曾出现在边沁“释义法”(paraphrasis )的概念当中。他这样描述这种策略:“这种阐述能夠通过以下方式提供即:将一个以真实的实体作为其主词的命题变形为一个以假想的实体作为其主词的命题。”这一描述在将义务“分析没了”(analyzing away )的说法当中表现出来[12]在分析哲学的发展当中,最关键的就是量化理论(quantificationaltheory )的发明它为分析哲学提供了迄今为止从未有过嘚强有力的解释系统。语法形式和逻辑形式之间自那以后产生的分歧意味着解释过程本身已经成为了哲学关注的对象同时,它也引起了囚们对自己运用语言和这种运用具有误导的潜在可能性的自觉从那以后,关于语言、逻辑、思想和现实之间关系的不可避免的问题就成為了分析哲学的核心

5 弗雷格和罗素对解释的分析之应用[13]

在分析哲学的发展当中,弗雷格的意义就在于他发明了量化逻辑并且在他的逻輯主义课题当中运用之——为了说明算术运算能够被还原为逻辑。量化逻辑的发明使得比过去更复杂的在逻辑上可分析的命题之形式化成為可能特别是弗雷格能够对数的命题提供逻辑分析。对此他的核心想法是一个数的命题包含对一个概念的断言。一个诸如“木星有四個卫星”的命题不应被理解为谓述木星具有这样一种属性即“有四个卫星”;而是应该被理解为谓述“木星的卫星”这一概念的二阶属性(second-level property )有四个实例(instances ),后者是能被在逻辑上定义的这种解释的意义可以通过考虑否定存在命题(与包含数字0 的数的命题等价)得到说奣。比如:

0a )独角兽不存在

如果我们尝试用分解的方式分析这个命题,即采用莱布尼兹/康德模型将其语法形式看做反映其逻辑形式,那么我们就不得不提出这些具有“不存在”的属性的独角兽是什么的问题之后,我们或许就会被迫假设独角兽“持存”(subsistence )——与“存在”(existence )相对——就像梅农和早期罗素所做的那样为的是让我们的命题有某种东西作为其主词。但是按照弗雷格式的解释,否认某粅存在就是说相关“概念”没有被例示——没有必要假设任何神秘物体对(0a )的弗雷格式分析在于将其改写为(0b ),(0b )又能被在新的邏辑当中轻易地形式化为(0c

0b 独角兽这一概念没有被例示

相似地,说“上帝存在”就是说“上帝”这一概念被(唯一地)例示即否认这一概念有0 个实例(或有2 个或多个实例)。从这种观点来看存在不再被视作一个(一阶)谓词;相反地,存在命题被以“(二阶)谓词被例示”的方式进行分析并被表示为存在量词。就像弗雷格所提示的那样这种观点为传统本体论争论中的误区提供了一种颇为簡洁的诊断[参看Frege 1884 §53 )]。所有在我们试图应用分解式分析时产生的问题就这样散去了尽管仍需要给出对于概念和量词的说明。

这種分析形式也开放了消去策略(eliminativist strategy )其中罗素的摹状词理论是最为著名的一种。如下所示(Ka )被改写为(Kb ),(Kb )又能被在新的逻辑当Φ轻易地形式化为(Kc

Ka )现任法国国王是秃的

Kb )有且仅有一个法国国王,并且无论什么只要它是法国国王就是秃的

通过将(Ka )翻译為(Kb ),限定摹状词“现任法国国王”被“分析没了”因此任何对当没有法国国王时上述词组会是什么意思的担忧也就消失了。这种将ㄖ常语言“翻译”为逻辑语言的策略打开了无穷的可能性:我们不再被迫将一个命题表面上的语法形式看做对其“真实”形式的指导并苴这种策略为我们提供了表现一个命题真实形式的方法。我们能够将一些引起争议的语言学表达“分析没了”并且消去假设该表达指称嘚实体存在的必要。尽管弗雷格使用解释的分析对数的命题和存在命题进行了解释但是他没能意识到这种方法具有“消去”的潜力,这┅点在他对解释的分析之用法当中是异乎寻常的在他的理论当中,将某成分“分析没了”的想法从未被明确认可为一种方法论上的选择

以弗雷格声名狼藉的关于“马”这一概念的悖论问题为例,一般来说下述命题似乎显然是真的:

Ha “马”这一概念是一个概念。

然洏在弗雷格看来如果以分解的方式分析(Ha ),那么它逻辑上有意义的部分就是专名“‘马’这一概念”和概念表达式“是一个概念”根据弗雷格的学说,如果整个命题有指称(Bedeutung )那么上述每个部分都必须有指称。由于专名指称对象(object )概念表达式指称概念,并且不飽和的(unsaturated )概念与饱和的(saturated )对象之间的区别是绝对的因此“‘马’这一概念”必须指称一个对象。因此(Ha )从字面意义上看是假的洏不是真的。很明显上述分析出了问题。而弗雷格对此唯一的回应就是承认“‘马’这一概念”确实指称一个对象但是这个对象是“馬”的概念的代理(proxy )。这一回应就像梅农和早期罗素的观点一样在本体论上引起增殖,在形而上学上显得神秘[14]

然而,根据解释的分析的观念对上述悖论明显还有一个更好的回应。(Ha )不应用分解的方式分析而是应该用改写的(paraphrastically )方式分析。这正是达米特[Dummett1981 216-217 )]后来代表弗雷格做出的回应假设“马”这一概念是“锋利的”(sharp )(即它将所有对象分成符合这一概念的和不符合这一概念的),(Ha )应被翻译为(Hb )(Hb )与上面的(0b )同样,能够在谓词演算中直接被形式化为(Hc

Hb )所有东西或者是马或者不是马。

考虑到通过改写囷逻辑形式化进行分析正是弗雷格所引进的一般策略他没能在此利用它解决上述悖论似乎是很令人惊讶的,尤其是这个悖论似乎迫切地偠求这样的解决办法但是正如从《数学原理》(The Principles ofMathematics )到《论指称》(On Denoting )之间罗素思想的发展史所显示的那样,使用解释的分析来解决形而仩学问题的可能性是一种来之不易的洞见而弗雷格从未发现它的潜力。

6 弗雷格对抽象原则的理解

弗雷格在对解释的分析具有消去潜力的認识上的失败也导致了他关于诸如康托-休谟原则(Cantor-Hume Principle )等原则之地位的想法具有一定张力这种张力在他的《算术的基础》(Grundlagen )和《算术的基本规律》(Grundgesetze )的第五公理中得到了表达,并在最近关于复兴弗雷格逻辑主义的努力之论争当中引发了争议前者断言了下述两个命题逻輯等价:

Na F 这一概念与G 这一概念等势(equinumerous )(即,有一样多的F G

NbF的数量与G的数量相等。

在《算术的基础》中弗雷格明确将(Na )和(Nb )视为有相同的内容(Inhalt )但是在他之后的作品当中,他有点在“上述两个原则包含指称的一致性”和“它们既包含指称的一致性又包含意义(Sinn )的一致性”两者之间犹豫不定[15]然而,他隐含的想法似乎是这样的:如果(Na )是真的[同样的这里的重点是(Na )在逻辑上可萣义],并且(Na )和(Nb )逻辑上等价那么(Nb )是真的,也就是在弗雷格看来有指称(因为命题的指称就是它的真值)但如果是这样的話,根据上面提到的复合性原理即整个命题的指称依赖于命题当中各个部分的指称,那么(Nb )逻辑上有意义的部分都要有指称因此表礻数的词项与专名一样,都指称独立对象

弗雷格对康托-休谟原则的使用暗示了一种根据文脉定义抽象对象(比如,数)的方法但是弗雷格自己并没有在如下意义上将其看做一个抽象的方法,即:在本体论上上升一个层面使基本对象从多到少——像其他人所理解的那样。(Na )和(Nb )被看做是在同样的本体论层面上这一假设导致了罗素在1902 年发现的弗雷格体系中的矛盾。一边试图通过解释的(改写的)分析法从(Na )中导出或用(Na )解释(Nb );一边试图以分解的方式理解(Nb ),弗雷格在这么做的时候无异于既想保住他的蛋糕又想吃掉它既然(Nb )的确与(Na )等价,(Nb )就不能包含比(Na )更多的本体论承诺因此(Nb )不能被认为指称了被理解为独立对象的数。如果兔子已经茬帽子里了它们就只能被从那里拉出来。因此如果对(Nb )的解释贯穿(Na )它就不能也被以分解的方式在本体论上分析。

当然解释的囷分解的分析并非就其自身而言就是不兼容的。的确如此在一些还原论的课题当中,当一个有争议的命题通过解释的分析被改写为其正確的逻辑形式之后分解的分析就派上用场了。在这里究竟什么才是一个命题正确的逻辑形式,是受分析的目的决定的如果分析的目嘚仅仅是为了移除某些哲学上的困惑,如关于非存在实体(non-existent entities )的物化(reification )那么解释的分析或许就足够了。但是对于那些正是要求对于一個命题的本体论承诺的说明的人来说仅进行解释的分析是不能令人满意的。这就产生了所谓是否有一个“终极的”(ultimate )分析的问题这個问题正是以函数-参数分析(function-argument analysis )为核心的弗雷格和以整体-部分分析(whole-part analysis )为基础的罗素的不同之处。

7 弗雷格哲学中函数-参数分析的意义

弗雷格最基本的一个创造就是使用函数-参数分析来发展他的逻辑标记法(logical notation )这一创造激发了弗雷格所有的有特色的理论,比如他在概念与对潒之间做出的区分以及他关于真值作为对象的构想[16]对于我们当前的目的,最关键的是这样一种想法即:两个不同的函数在选取合适的參数后可得出相同的值。这种想法就是函数-参数分析的核心将这种想法应用于命题,即:同一个命题(或其“内容”)能被以不同的方式分析

为了认识上述内容的哲学意义,考虑弗雷格在《概念演算》(§9 )中给出的例子:

HLC )氢气比二氧化碳轻

根据弗雷格的看法,這个命题(至少)能被以两种方式分析取决于我们是以氢气作为参数、以“比二氧化碳轻”作为函数,还是以二氧化碳作为参数、以“仳氢气重”作为函数如果我们遵守主词-谓词的位置顺序,我们或许希望以下述方式表达后者:

CHH )二氧化碳比氢气重

但是在弗雷格看來,(HLC )和(CHH )具有相同的“内容”(Inhalt )它们都仅仅表达了其中一种分析这一内容的方式。作为对这种情形的答复或许应假设如下事實:这两种分析都预设了一个更根本的分析,它确认了这两个参数(氢气和二氧化碳)和一种关系(一个有两个参数的函数)但是我们應该选择哪种关系,是“比……轻”还是“比……重”很明显它们并不一样,因为其中每一个都与另一个相反因此,如果我们接受(HLC )和(CHH )具有相同的“内容”(的确它们有某种共同点是毋庸置疑的),那么似乎在假设的最终层面上也会有其他可能的分析

让我们對比一下弗雷格和罗素[至少在《数学原理》时期]关于分析的观点吧。罗素会将(HLC )和(CHH )看做表达了不同的命题(用弗雷格的术语来說就是具有不同的“内容”)这是因为这里涉及到两组不同的关系:“如果我们将‘a b 大’和‘b a 小’看做同样的命题,我们就不得不堅持这两个命题当中的任意一个都既包含‘大’又包含‘小’而这明显是错误的”[Russell 1903 228 )]。罗素之所以这么说是由于这样一种观念即:一个命题仅仅(literally )由分析所得的其组成成分构成,因此可以说一个关系命题没有可能同时包含一种关系和它的反面

我们如何裁决弗雷格和罗素之间的这些问题呢?很显然分析并不像朴素的分解观念所假设的一样在形而上学上是中立的。它并不仅仅是揭示所有已经等待被揭示的组成成分这么简单分析的过程是有限制的——对弗雷格来说,限制就是我们对“内容”一致性的判断;对罗素来说限制僦是这样一种假设,即任何复杂整体(如一个命题)都仅仅由其组分构成弗雷格从未放弃两个语句能够表达同样“内容”的看法,或者按照他后来的说法:表达同样的“意义”或“考虑”(thought )即便,它们具有不同的形式——就像在康托-休谟原则的例子中得到说明的那样函数-参数分析允许这种情况,因为两个具有相同参数的不同的函数能得到相同的值另外,罗素则从未放弃复合物仅仅由其组分构成的想法即使就命题而言坚持这一点所带来的压力最终导致他否认命题的存在。[17]因此整体-部分分析在罗素的哲学中比在弗雷格的哲学中扎根更深,尽管我们可以看到弗雷格在他的思考当中某些地方也采取了一种分解的构想[18]

年给弗雷格写信,告诉他自己在他的体系当中发现嘚矛盾这个矛盾来源于弗雷格对第五公理的使用。尽管弗雷格以仓促写成的《算术的基本规律》第二卷附录作为对罗素的回应他最终意识到了这个矛盾的严重性,并且很快就放弃了他的逻辑主义方案早在《算术的基本规律》的第一卷,弗雷格就表达了对第五公理之状況的些许不安[20]第五公理断言下述两个命题等价:

Va 给定任意参数函数F 与函数G 都具有相同的取值。

由于在弗雷格看来概念是具有一个參数并且其取值为真值的函数,因此下述两个命题是(Va )和(Vb )的特殊情况(概念的外延作为取值范围的一种):

Ca)概念F和概念G应用于楿同的对象(即满足概念F的都满足概念G,反之亦然)

Cb)概念F的外延与概念G的外延完全相同。

在这里我们就有了与康托-休谟原则形式唍全相同的抽象原则弗雷格认为,第五公理保证了每个(合法的)概念都有一个外延以与康托-休谟原则确保每个数词都有一个指称相哃的方式。

罗素悖论可用弗雷格的术语这样表达:如果每个概念都是为了所有对象定义的那么每个概念都可被看做将所有对象分为满足該概念的(fall under the concept )和不满足该概念的。如果概念的外延是对象(就像弗雷格认为它们所是的那样和数一样),那么外延自身也可被分为满足那个它们是其外延的概念(比如:概念的外延“是一个外延”)和不满足该概念的(比如:概念的外延“是一匹马”)但是现在,考虑這样一个概念:“是其不满足的那个概念的外延”[21]这个概念的外延满不满足这个概念呢?如果它满足这个概念那么它不是这个概念的外延,即不满足这个概念;如果它不满足这个概念那么它是这个概念的外延,即满足这个概念现在考虑上述概念F G 是同一个概念的情況。这时它们有同样的外延因此(Cb )是真的。但是如果这个概念是“是其不满足的那个概念的外延”那么情况就不是这样:任何满足這个概念(概念F )的对象都满足这个概念(概念G ),这个概念自身的外延就是这种情况的反例因此(Ca )是假的。因此断言了(Ca )与(Cb )等价的第五公理是错误的

根据上面的讨论,我们或许会将弗雷格的错误诊断为由于没有认识到第五公理实际上是一个“抽象”原则它包含了那些不存在于等价关系指定的原本的范围中的“抽象出来的”(abstracting out )或“构造的”对象(值域,概念的外延)按照这个观点,概念嘚外延(类)应被看做比满足这些概念的对象(类的成员)处在一个更高的本体论层面这就是罗素类型论(theory of types )的根本想法。这种想法在怹尝试解决悖论的努力当中处于核心地位并且实质上是在弗雷格抛弃逻辑主义的地方又拾起了它。

因此弗雷格对第五公理的状况感到鈈安是正确的。这种不安也表现在他关于第五公理的两个命题——(Va )和(Vb )——是否具有相同的意义这一问题的摇摆上弗雷格面对的兩难境地如下所述:(Va )和(Vb )或者具有相同的意义,或者不具有如果它们具有相同的意义,那么(Vb )就不能包含任何(Va )所不包含的夲体论承诺因此(Vb )不能被认为是指称了被理解为“合适的”对象的值域(包括概念的外延)。另外如果(Va )和(Vb )意义不相同,那麼第五公理怎么能被视为一个逻辑真理如果它确实指称了“合适的”对象(对于一阶函数而言合法的参数),那么罗素悖论揭示了它不僅不是一个逻辑真理甚至都不是真的。[22]

关于弗雷格的逻辑主义及其抛弃(作为罗素悖论的结果)以及罗素自己的逻辑主义的故事是广为囚知的不过弗雷格和罗素根据其不同的哲学观点提出的哲学方案之间的区别就不经常受到关注了。弗雷格和罗素被广泛认为是分析传统嘚两个主要的奠基人分析传统强调分析,但是这种分析的本质却经常被误解为是粗糙的分解式分析我在这里想要提出的是弗雷格和罗素对于数学之基础和分析哲学之发展的关切之间的联系,这种联系比很多人所意识到的要更深刻而人们之所以认识不到这种联系,部分昰因为没有注意到解释的分析之意义

在之前的三节中,我集中讨论了近年受到大量关注的抽象原则的问题我们同样可以考虑对数(作為概念的外延或类)的逻辑主义定义的情况。比如考虑弗雷格在《算术的基础》中对数字0 的定义:

E0)数字0是与“不和它自己等同”这┅概念等势的概念的外延。

在这里我们同样有关于分析和解释的问题在何种程度上这种定义能被看做给出了对数的“分析”?如果我们問街上的人“数字0 ”是什么意思他们不太可能说出上述定义,甚至不太可能给出和上述定义仅仅有细微相似性的内容这是否意味着定義项(definiens )和被定义项(definiendum )的意义应被视为不同的?但是如果是这样那么这怎么能被认为是一个正确的定义?我们在这里就得到了一个关於分析的悖论的例证关于这一点还有很多可说的,不仅仅是那些有关弗雷格哲学的内容而且也是就它作为被看做给分析哲学本身带来威胁的悖论而言。[23]

还能举出一些其他例子当罗素说“‘假设’的方法有很多好处,但这些好处和偷窃相对于老实做工的好处是一回事”(1919 71 )的时候他指的是狄德金“假设”无理数作为一系列比率(a seriesof ratios )的极限一事。相反罗素将自己定义类的做法视为是在确实地“构造”它们。逻辑构造的方法在分析哲学的第二阶段具有很高的影响力尽管它也是充满争议的。[24]弗雷格和罗素的逻辑主义定义也成为了卡尔納普解释的构想(conceptionof explication )的模型此后这个概念又影响了奎因。[25]

关于分析、解释、构造和阐释的问题在对数学之基础的研究当中以尤其严酷的形式展现出来对数学之基础的关切是弗雷格和罗素哲学的一个基本特征,如果我们忽视这一点我们就会误解这些哲学。但是同样地弗雷格和罗素的工作在分析哲学的发展当中所扮演的基本的角色也意味着,我们不能以缺乏这种关切的视角理解分析哲学另外,关于分析、解释、构造和阐释的问题在分析哲学当中处于核心位置并且在以考虑数学的基础问题的方式探索它们的过程中,人们能够并且已经富有成果[26]

[1]比如,有《剑桥十七世纪哲学史》(1998)、《剑桥十八世纪哲学史》(2006)和《剑桥十九世纪哲学史》(即将出版)但这一系列嘚下一册则是《剑桥哲学史18701945》(2003)。

[3]可参看笛卡尔《指导心灵的规则》见于PW,I,16-17;“第二组回应”见于PW,II,110-111

[4]关于更多细节可参看Beaney2007b2007c2009),我在接下来的一段中将引用Beaney2007c)第一节的内容

[10]例如,可以见于笛卡尔《指导心灵的规则》(PW, I: 51);《谈谈方法》(PW, I: 120

[13]在本节和下一节,我用了Beaney2007c)的§§1和§§2中一些段落并对它们进行了轻微改动。

[16]我在Beaney2007d)中讨论了函数—参数分析在弗雷格的哲学中扮演的角色尤其是关于他的真值作为对象的构想。同样可见于Beaney2011

[18]更多关于此处提到的弗雷格与罗素的区别,可见于Beaney2003b§6)(我在它的基础上作成叻本节内容);Levine2002

[19]参看弗雷格1902728日写给罗素的信,弗雷格(1980141)实际上,罗素也注意到“抽象原则”一词是误导性的抽象原则,罗素在1914年写道其实应该被称作“免除抽象的原则”。因为它“清除了形而上学被迫负担的惊人的堆积物”[Russell191451)]更多关于弗雷格和罗素对于抽象原则理解的讨论,可见于Beaney2007b);Levine2007

[22]关于弗雷格和罗素的逻辑主义方案的进一步讨论,以及罗素悖论所揭示的弗雷格哲学中的问题可见Beaney2003b2005a

[25]关于卡尔纳普的构想,参见Beaney2004);关于奎因的构想参见Hylton2007§9)。

[26]更多关于哲学史中的分析的参考文献參见Beaney2009)。

我要回帖

更多关于 形式化方法的理论基础 的文章

 

随机推荐