- 演算 — 动态耦合系统的模型

46
1 - 演演 —演演演演演 演演演 演演演 演演演演演演演演演 西 演演演演演演演 The - calculus of Robin Milner -a Tutorial

Upload: elroy

Post on 09-Jan-2016

190 views

Category:

Documents


2 download

DESCRIPTION

- 演算 — 动态耦合系统的模型. The - calculus of Robin Milner - a Tutorial. 郝克刚 西北大学计算机科学系 软件工程研究所. 罗宾 . 米尔纳 Robin Milner. 1991 年 ACM 图灵奖获得者 professor of computation theory University of Edinburgh, University of Cambridge. LCF (logic for computable functions) ML (Metalanguage) 元语言,也称函数式语言 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: - 演算 — 动态耦合系统的模型

1

- 演算 —动态耦合系统的模型

郝克刚

西北大学计算机科学系 软件工程研究所

The - calculus of Robin Milner

-a Tutorial

Page 2: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 2

罗宾 . 米尔纳 Robin Milner

LCF(logic for computable functions)ML (Metalanguage) 元语言,也称函数式语言CCS (calculus for communicating systems) 通信系统演算1989 年提出 - calculus Milner, R., Parrow, J. and Walker, D. A calculus of mobile processes. 移动进程演算

1991 年 ACM 图灵奖获得者professor of computation theory University of Edinburgh, University of Cambridge

Page 3: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 3

讲座提纲一. 什么是演算

演算的三大要素 逻辑演算 - 演算

二二 - 演算的基本概念 符号系统 - 表达式的语法

二二 - 演算的演算规则 结构等同 规约

四. π-演算的一个重要特点,动态耦合系统

五. 多元 -演算六. 递归定义

带定义的 -演算 用重复实现递归

七. 类型、对象和函数八. 等价性

带标号转移系统 强、弱互模拟、等价

关系, 进程代数

九. 结束语

Page 4: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 4

什么是演算? 命题演算 – 命题逻辑 谓词演算 – 谓词逻辑 时态逻辑演算 – 时态逻辑 - 演算 – 可计算函数

演算系统 逻辑思维逻辑系统

Page 5: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 5

构成演算的三大要素 符号系统 表达式的合式形成规则 演算(推演)规则

演算的表达能力、应用。

Page 6: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 6

符号系统 系统中所用的符号,构成演算对象的基本元素。 例如,命题演算中的

命题变量: p,q,r,…… 命题连接词: , ,, ,

谓词演算中的 个体变量: x,y,z,…… 谓词: P,Q,R,…… 全称、存在量词: ,。

时态逻辑演算中的 下一时刻算子 o ,必然算子,终于算子 <> 等。

Page 7: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 7

表达式的形成规则 形成合式表达式的语法规则。 通常使用 BNF 。例如,对于命题演算:< 合式公式 > :: < 命题变量 > | < 合式公式 > |

< 合式公式 > 命题连接词 < 合式公式 >

< 命题变量 > :: < 字母 > | < 命题变量 >< 字母 >

< 命题连接词 > :: | | |

如, p q p q 为避免歧义。合理使用括号和定义连接词优先。

Page 8: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 8

演算、推演规则 例如命题演算的推演规则

p——————

p q

p——————

p

——————p p

q——————

p q

p——————

p

Page 9: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 9

- 演算 – 可计算函数

语法规则< -term> ::= <variable> | <variable> . < -term>

| (< -term> < -term>)<variable> ::= x | y | z | …

语法规则可更简捷地写为:E ::= V | V.E | (E1 E2) V :: = x | y | z | …其中 V 是任意一个变量 , E i 是任意一个 - 表达式。我们称 V 是 - 表达式的 head , E 是 - 表达式的

body.

Page 10: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 10

自由变量的集合 fv(E) 表示 E 中自由变量的集合

fv(x) = {x}fv(E1 E2) = fv (E1) U fv (E2) fv(λx.E) = fv (E) -{x}

例如: f . x . f(nfx)fv (f . x . f(nfx))= fv (x . f(nfx)) –{f}= fv (f(nfx)) –{x} –{f}= fv (f) U fv (nfx) –{x} –{f}={f} U {n} U {f} U {x} –{x} –{f}= {f,n,x} –{x} –{f} = {n}

Page 11: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 11

演算规则 规约规则 Reduction Rule

α-rule (换名) : x.E →y.E [y/x] if y fv (E) β-rule (作用) : ( x.E) Ea →E [Ea/x] if x fv (E) ηrule (消去) : ( x.E ) Ea →E if x fv (E)

其中 E[Ea /x] 对表达式 E ,用 Ea 替换其中自由变量 x 的所有出现。

f . x . f (f x)→ g. x . g (g x)→ g. y . g (g y)

g. y . g (g y) f x→ y . f (f y) x

→ f (f x)y . f (f z) x

→ f (f z)

Page 12: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 12

表达自然数上的函数 定义自然数(用 - 表达式 来表达)

define 0 = f . x . x

define 1 = f . x . f x

define 2 = f . x . f (f x)

define 3 = f . x . f (f (f x))

……

定义后继函数define Succ = n . f . x . f (n f x)

验证 Succ 2 = 3

Succ 2 ( n . f . x . f (n f x))

( g . y . g (g y)) f . x . f (g. y . g (g y) f x) f . x . f (y . f (f y) x) f . x . f (f (f x))

= 3

Page 13: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 13

- 演算理论的重要贡献 定义如此简捷的一个演算,它的功能竟然等同于所有的可计算函数( - 演算等价于图灵机、递归函数、正规算法等)

这是 20 世纪计算机科学理论最重要的成就之一。

欣赏和品味抽象之美,简约之美。

Page 14: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 14

罗宾 . 米尔纳 的 π演算 The π-calculus 是 Robin Milner 在下述演算系统的基础上建立的。 Church’s λ-calculus 等价于 Turing Machines CCS (calculus for communicating systems)

- Robin Milner CSP (communicating sequential processes)

- Anthony Hoare

Page 15: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 15

π- 演算的基本概念: 符号、表达式、归约

在 π- 演算中最基本的元素是名字 (name) ,名字有无穷多,记作:

x,y,…∈ N 再一个概念就是过程 ( process) ,过程是由名字按照下属语法 (BNF) 构成的表达式

P ::= ∑i∈Iπi Pi | P | Q | !P | (νx)P

其中 Pi ,P,Q, 都是过程。 下面对它的语法和直观语义分别作些解释

Page 16: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 16

∑i∈Iπi Pi

这是一个 “和型 (Summution) ” 式,这里 I 是一个自然数的有穷集 I N . 也就是说,它是由有穷个形如 π P 的项相加而成的表达式。自然它也可以写成

π1 P1 + π2 P2 +…+ πn Pn

其中 π P 的前缀 π 有以下三种形式。直观地讲,前缀 π 表示一个动作 (action), 它是执行 π P 的第一个动作。 x(y) P ,它将 y 绑定到过程 P ,解释为:“在通道 x 上接

受信息并交给过程 P 的某个名字 y ” 。 y P ,它不绑定 y 到过程 P ,解释为:“将名字 y 输出

到通道 x 上”。如果只是同步,而不传送信息, y 可省略。

P ,解释为:“执行 P 的内部动作” 。

x

注 ; (x=y) π P

Page 17: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 17

∑i∈Iπi Pi

在这里 , “ 和”的直观意思解释为在各个项中只选择一个项执行,其他选项将被抛弃。

选择是由“配对 (redex)” 来实现的 .

例如,下面的 x(y) 和 z 就构成一个配对x(y).P + w(y).R | z.Q

后面将会讲到,上式将归约为→ P[z/y] | Q

在 I =∧ 时把“和”定义为 0 。也就是说, 0 也是一个过程,解释为“什么也不做” 的过程。

xx

Page 18: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 18

P ::= ∑i∈Iπi Pi | P | Q | !P | (νx)P

P |Q 称为并行,解释为独立并行执行的过程,它们之间可以通过通道通信。

!P 称为重复 (replication), 等同于很多个过程 P 在并行执行: P |P | … 数量不受限制,根据需要动态产生。一个最普通的例子是 ! zP ,它提供了一种需要时就产生的资源。

! zP | x(y).Q | x (y).R

→! zP | zP | zP | x(y).Q | x (y).R→! zP | P | P | Q[z/y] | R[z/y]

x

xx x x

x

Page 19: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 19

P ::= ∑i∈Iπi Pi | P | Q | !P | (νx)P

最后 , (νx)P, 称为限制 (restriction) 或新名字(new) 它限制名字 x 只在 P 中有效,或者说它声明了一个只在 P 中使用的名字 x ,它区别于 P 以外的任何名字,即使它同样叫 x 也于此 x 不同。P = ( νa)((a.Q1+b.Q2)| .0 )|( .R1+ .R2)

P → ( νa)(Q1)|( .R1+ .R2)

或 P → ( νa)(Q2)| )|(R1)

P ? → ( νa)(Q1)| )|(R2)

aba

a

a

b a

X

Page 20: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 20

结构等同 structural congruence

我们称 两个过程 R1 ,R2 是结构等同的 (structural congruence ) ,记作 R1 ≡ R2 ,如果 R1 是由 R2 经过若干次下属转换或等式替换得来的:

改变绑定名字(α 转换)。 P+Q ≡ Q+P P|0 ≡P, P|Q ≡Q|P , (P|Q)|R ≡ P|(Q|R) !P ≡ P |!P (νx)0 ≡ 0, (νx) (νy) P ≡ (νy) (νx)P 如果 x 不在 P 中自由出现 (νx) (P |Q) ≡ P | (νx) Q

Page 21: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 21

归约 (reduction) 规则在过程表达式 P, P’ 之间建立归约关系 : P → P’ 两条公理

三条推理规则 P → P’ P → P’PAR 并行 : ———————— RES 限制 : ————————— P | Q → P’ | Q (ν x) P → (ν x) P’

P ≡ Q P → P’ P’ ≡ Q’STRUCT 结构 : ———————————————— Q → Q’

TAU 内动 .P + M → P

REACT 交互 ( x(y).P +M) | ( z.Q + N) → P [z/y] | Qx

Page 22: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 22

注意,有些是规则不允许的! 受动作约束的项以及和项不能单独规约,例如

a.( x(y).P | z.Q) → a.( P [z/y] | Q ) 我们并没有这样的规则

而是用结构等同推出:! P ≡ P |…| P |! P →n P’ |…| P’ | ! P

x

P → P’———————! P → ! P’

X

X

Page 23: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 23

一个例子 :缓存器

生产者 缓存器 消费者

!(νa) a.0 | !x(z) (z).0 | !y(w).Px y

!(νa) a.0|(νa) a.0 |!x(z). (z).0| x(z). (z).0 |!y(w).P| y(w).Px yx y

!(νa) a.0 |!x(z) (z).0 |(νa) (a).0 |!y(w).P| y(w).Px yy

!(νa) a.0 |!x(z) (z).0 |!y(w).P |(νa) P[a/w]x y

!P ≡ !P |P

存量不受限制,不保序!

Page 24: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 24

π-演算的一个重要特点 通道名可以作为名字传送。

x(y). a.P | z.Q | z (w).R

a.P | Q | z(w).R

P | Q | R [a/w]

y x

zx

x

y

zx

x

z

z

动态耦合系统的模型

Page 25: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 25

动态耦合系统的模型 固定结构和动态耦合系统

mail, -- Add Internet , --

URL mobility, ,移动通信。

……。

Page 26: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 26

多元 (polyadic) π- 演算 在上面的 π- 演算系统中,沿着通道发送和接收的名字是单独的标量,所以称为单元 (Monadic) π- 演算。

如果沿着通道发送和接收的允许是名字组成的多维数组,则称系统为多元 (polyadic) π- 演算。

x(y1,y2,…,yn).P | <z1,z2,…,zn>.Qx

x(y).P | z.Qx

x( ).P | < >.Qxy

z

Page 27: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 27

在单元 π- 演算中的表达

x(y1). x(y2 ).…x(yn).P | z1. z2.… zn.Qx x x

x(y1,y2,…,yn).P | <z1,z2,…,zn>.Qx

x(y1). x(y2 ). P | z1. z2. Q | z’1. z’2.Rx x xx

x(t).t(y1). t(y2 ).…t(yn).P | (ν w)( w. z1. z2.… zn.Q)x w w w

X

Page 28: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 28

过程标识、过程定义和递归 在演算中引入过程标识、过程定义是很方便的。 将演算的语法和结构等同的定义扩充: P ::= A(x1,…,xk) | … …

A(x1,…,xk) QA

A(y1,…,yk) ≡ QA [(y1,…,yk) / (x1,…,xk) ]

后面会看到 - 演算的表达能力很强,可以用重复和并行来表达过程定义,甚至递归定义。

例如,移动电话,布尔缓冲器等。

def

Page 29: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 29

移动电话 mobile telephone network

Car1,…,Carn

Station1,…,Stationm Control

Car1|…|Carn | Station1|…|Stationm | Control

Page 30: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 30

移动电话的 π- 演算表示

Station-j

IdSta-j (tku,tkd,los) tj <tku,tkd,los> . Sta-j (tku,tkd,los)

Sta-j (tku,tkd,los) tku . . Sta-j (tku,tkd,los)+los.! IdSta-j (tku,tkd,los)

Car-i ! . tkdi tkui

Control命令 Car-i 进入 Station-j < tkui,tkdi,losi >命令 Car-i退出 Station-j

tjlosi

def

deftkd

! IdSta-j (tku,tkd,los) → ! IdSta-j (tku,tkd,los) | IdSta-j (tku,tkd,los)

→ tj <tku,tkd,los> . Sta-j (tku,tkd,los)

→ Sta-j (tkui,tkdi,losi) → tkui . . Sta-j (tkui,tkdi,losi)+losi.tkdi

Page 31: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 31

布尔缓冲器(容量为 2 ,先进先出)

定义七个过程如下B x0.B0+x1.B1

B0 x0.B00+x1.B01+ .B

B1 x0.B10+x1.B11+ .B

B00 .B0

B01 .B1

B10 .B0

B11 .B1

def

def

defdef

def

def

def

0y0y

0y

1y

1y

1y

布尔缓冲器x0

x1

0y

1y

B→B0→B01→B1→BB→B0→B01→B1→B11→B1→B

B

B1B0

00 01 10 11

x0x10y 1y

输入 0 :通道 x0 ,输入 1 :通道 x1 ,输出 0 :通道 y0 ,输出 1 :通道 y1,

Page 32: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 32

在 - 演算中实现过程标识、递归定义

为每个过程标识创建新名字,例如 ai 。 将所有过程 (包括定义右边 QA) 中出现的标识 Ai(y1,

…,yk) 替换为:< y1,…,yki>

将替换后的 QAi 写成 ai (x1,…,xk). QAi, 加重复和并行同原有的过程并行放在一起:

P | ! a1 (x1,…,xk1). QA1 |……| ! an (x1,…,xkn). QAn

下面举例说明

Ai(x1,…,xki) QAi

P = … Ai(y1,…,yki) …

def

ai

Page 33: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 33

标识定义的布尔缓冲器直接用 - 演算表达

B x0.B0+x1.B1

B0 x0.B00+x1.B01+ .B

B1 x0.B10+x1.B11+ .B

B00 .B0

B01 .B1

B10 .B0

B11 .B1

def

def

defdef

def

def

def

0y0y

0y

1y

1y

1y

! b.(x0. +x1. )|

! b0.(x0. +x1. + . )|

! b1.(x0. +x1. + . )|

! b00. . |

! b01. . |

! b10. . |

! b11, . |

0y0y

0y

1y1y

1y b

0b

00b

1b

01b11b10b

0b

0b

1b

1bb

…… | B | …… …… | | …… b

在 - 演算中实现过程标识、递归定义。可见 - 演算表达能力很强。

Page 34: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 34

类型 (sort) 和归类 (sorting)

同各种算法语言变量有类型一样, - 演算的名字也可以有类型,这里称名字的类型为 sort ,区别于 type 。

记类型的集合为 Σ ,类型列表的集合为 Σ* 。 称函数 ob: Σ→ Σ* 为归类 (sorting) 称某过程(或一组过程)具有归类 ob ,如果对于过程

中所有形如 x(y).P 或 <y>.Q 的子项,当 x 的类型是 σ 时,则 y 的类型一定是 ob(σ).

例如 R = x(y). <u,v> S = <z>.z(w) R | S 就不具有任何归类。因为 y 和 z 不可能具有

相同的类型。

xy

x

Page 35: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 35

- 演算的表达能力相当强 - 演算虽然很简单,但是它的的表达能力相当强。除了前面所述的移动通信等动态耦合系统外,一般的系统功能也能表达。如:

- 演算表达具体的数据, - 演算表达对象、对象的方法、继承、多态等。 - 演算表达函数。 非常有趣的是 λ - 演算在 - 演算中的表达。

Page 36: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 36

标号转移系统 (LTS) 。 设有一个标号集合 L ,一个状态集合 Q ,和一个三元关系 T Q X L X Q, T 也称为标号转移的集合,如果有 (q,α,q’) T ,也记作 q q’α

q0

q3

q1

q2

ab

cp0

p3

p1 p2

p1’

a

a

b

c

Page 37: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 37

强模拟 Strong Simulation

设有一 LTS=(L,Q,T) , Q 上的二元关系 S 称为是强模拟关系,当且仅当:对于任意 pSq

如果 p p’ 则存在 q’ 满足 p’Sq’ 而且 q q’

如果有强模拟关系 S 使得 pSq ,则称 q 强模拟 p 。

q 强模拟 p 的例子。

αα

q0

q3

q1

q2

ab

cp0

p3

p1 p2

p1’

a

a

b

c

(p0,q0)(p1,q1)(p1’,q1)(p2,q2)(p3.q3)

Page 38: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 38

强互模拟 Strong Bisimulation 关系和强等价

q0

q3

q1

q2

ab

cp0

p3

p1 p2

p1’

a

a

b

c

(p0,q0)(p1,q1)(p1’,q1)(p2,q2)(p3.q3)

q1 S-1 p1q1 q3p1 ?

c

c

如果强模拟关系 S 的逆关系 S-1也是强模拟关系 , 则称为是强互模拟 Strong Bisimulation 关系。

强模拟关系不是强互模拟关系的例子。

S-1 不是强模拟关系

Page 39: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 39

如果 pSq, 称 p 和 q 强等价,记作: p ~ q ~ 是等价关系,即满足自反、对称和传递律:p ~ p ; p ~ q→ q ~ p ; p ~ q , q ~ r → p ~ r

如果这里是 c

如果没有这个转移

q0

q1 q2

abap0

P2’

p1 p2

p1’

a

a

b

b

强互模拟关系的例子。

q0’aa

a

(p0,q0)(p0,q0’)(p1,q1)(p1’,q1)(p2,q2)(p2’,q2)

强互模拟 Strong Bisimulation 关系和强等价

Page 40: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 40

- 演算的标号转移系统 以 Action 为标号,在 - 演算中引入标号转移规则。 把 Process 扩展为 Agent 。举例说就是 x(y),P

<z>.Q 。通道名后面部分 x(y),P , <z>.Q (分别称为 Abstraction 和 concretion )

定义 x(y),P @ (νz)<z>.Q (νz)( P[z/y] |Q) - 演算的标号转移规则称为 commitment rules.

(x F+M) | ( C+N) F@C x

x

x

def

Page 41: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 41

- 演算的标号转移规则

Page 42: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 42

弱模拟、弱互模拟和弱等价。 x 和 是可观察动作, τ 是内部动作 二元关系 S 称为是弱模拟关系,当且仅当对于任意

pSq

如果 p p’ 则存在 q’ 满足 p’Sq’ 而且 q q’

如果 p p’ 则存在 q’ 满足 p’Sq’ 而且 q q’

其中 如果弱模拟关系 S 的逆关系 S-1也是弱模拟关系 , 则称为是弱互模拟 Weak Bisimulation 关系。

如果 pSq, 称 p 和 q 弱等价,记作: p q

x

τ

τλ τdef

λ

~~

Page 43: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 43

进程代数 A = ( P ,O1,...,On) 结构等价 ≡ ,强等价 ~ , 弱等价 ≡→ ~ , ~ → - 演算 的规约规则: β-rule (作用) :

( x.E) N →E [N/x]

( x.E) N E [N/x]

~~

~~

~~

Page 44: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 44

结束语 - 演算是米尔纳在众多的模型基础上建立的新模型,它非常简洁,但表达能力很强。

他开始是为移动通信系统建立的模型,但发现很适合作为各种动态耦合系统的模型。

Internet 和在它上面运行的应用系统多是动态耦合系统。如面向服务的计算 (SOC) 等。 - 演算为这种系统建模以及动态性能的分析和研究,提供了一个强有力的形式化的工具。

Page 45: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 45

The π-CalculusA Theory of Mobile Processes

Davide Sangiorgi, David Walker Published December 2001

592 pages

Communicating and Mobile SystemsThe π-CalculusRobin Milner

Published June 1999 174 pages 58 line diagrams 230 exercises

介绍下面两本书

Page 46: - 演算 — 动态耦合系统的模型

西北大学计算机科学系软件工程研究所 46

西北大学 软件工程研究所 所长

计算机科学系软件专业 教授、博导

[email protected]://mainpage.nwu.edu.cn/hkg/home/