CoasterX: A Case Study in Component-Driven Hybrid Systems Proof Automation
Brandon Bohrer (joint work with Adriel Luo, Xuean Chuang, Andr´ e Platzer)
Logical Systems Lab Computer Science Department Carnegie Mellon University
ADHS, Jul 7 2018
1 / 32
CoasterX: A Case Study in Component-Driven Hybrid Systems Proof - - PowerPoint PPT Presentation
CoasterX: A Case Study in Component-Driven Hybrid Systems Proof Automation Brandon Bohrer (joint work with Adriel Luo, Xuean Chuang, Andr e Platzer) Logical Systems Lab Computer Science Department Carnegie Mellon University ADHS, Jul 7
Brandon Bohrer (joint work with Adriel Luo, Xuean Chuang, Andr´ e Platzer)
Logical Systems Lab Computer Science Department Carnegie Mellon University
ADHS, Jul 7 2018
1 / 32
Top Thrill Steel Phantom Mindbender Joker’s Jinx Phantom’s Revenge Fujin Raijin II
[BLCP18]
2 / 32
Top Thrill Steel Phantom Mindbender
[BLCP18]
Pre → [phys]Post Identify:
3 / 32
Top Thrill Steel Phantom Mindbender
[BLCP18]
Pre → [phys]Post Identify:
3 / 32
Top Thrill Steel Phantom Mindbender
[BLCP18]
Pre → [phys]Post Identify:
Verify physical plant ({x′ = . . . , y′ = . . .})
3 / 32
Simulations typically used today [XXLY12, Wei15] Approach Pro Con Simulate Rich dynamics, easy Low rigor+precision Verify High rigor+precision Simple dynamics, hard
4 / 32
5 / 32
6 / 32
GUI Builder CoasterX Backend KeYmaera X Prover Core (1700 Lines) [FMQ+15]
Component model
dL fml. dL pf. Goal Solution Accessible High-level graphical modeling Rigorous Formal proof checked by small prover core Scalable Proof scales by exploiting component structure
7 / 32
Generic Component
8 / 32
Generic Component
8 / 32
Generic Component
8 / 32
Generic Component
8 / 32
Generic Component
8 / 32
P, Q ::= P ∧ Q | ¬P | ∀xP | θ1 ≥ θ2 | [α]P Example: Pre → [plant]Post Construct Meaning P ∧ Q, ¬P, ∀xP First-order Logic θ1 ≥ θ2 Real arithmetic comparisons [α]P Safety: After α runs, P always holds
9 / 32
α, β ::= · · · | {x′ = θ & P} | α ∪ β | α∗ Construct Meaning {x′ = θ & P} Evolve x at continuous rate θ Evolution domain constraint P asserted continuously α ∪ β Choose either α or β nondeterministically α∗ Loop α nondeterministically n ≥ 0 times
10 / 32
0 < vlo ≤ v |a| ≤ ahi |a| ≤ ahi [AST17]
11 / 32
⇒
12 / 32
Top Thrill Steel Phantom Mindbender Joker’s Jinx Phantom’s Revenge Fujin Raijin II
(>) (<) (<)
13 / 32
plant ≡ {{x′ = √ 2/2 v, y′ = √ 2/2 v, v′ = − √ 2/2 g & 0 ≤ x ≤ 100} ∪ {x′ = dx v, y′ = dy, v′ = −dy g, dx′ = −dy v/100 √ 2, dy′ = dx v/100 √ 2 & 100 ≤ x ≤ 200} ∪ {x′ = √ 2/2 v, y′ = − √ 2/2 v, v′ = √ 2/2 g & 200 ≤ x ≤ 300}}∗
14 / 32
plant ≡ {{Line(. . .) & 0 ≤ x ≤ 100} ∪ {Arc(. . .) & 100 ≤ x ≤ 200} ∪ {Line(. . .) & 200 ≤ x ≤ 300}}∗
14 / 32
plant ≡ {{Line(. . .) & 0 ≤ x ≤ 100} ∪ {Arc(. . .) & 100 ≤ x ≤ 200} ∪ {Line(. . .) & 200 ≤ x ≤ 300}}∗
14 / 32
plant ≡ {{Line(. . .) & 0 ≤ x ≤ 100} ∪ {Arc(. . .) & 100 ≤ x ≤ 200} ∪ {Line(. . .) & 200 ≤ x ≤ 300}}∗
14 / 32
Arc Segment: Arc
def
≡ {x′ = v · dx, y′ = v · dy, v′ = −dy · g, dx′ = −dy · v/r, dy′ = dx · v/r & InBounds(x1, x2, y1, y2)}
15 / 32
Line Segment: Line
def
≡ {x′ = v · dx, y′ = v · dy, v′ = −dy · g & InBounds(x1, x2, y1, y2)} ⇓Subst Line(1, 0, . . .)
def
≡ {x′ = v · 1, y′ = v · 0, v′ = −0 · g & InBounds(0, 100, 200, 200)}
16 / 32
Let track sections seci be component instances: seci
def
≡ Line(argsi) or Arc(argsi) and system model α: plant
def
≡ (sec1 ∪ · · · ∪ secn)∗
17 / 32
E = E0 ∧ OnTrack → [Arc] (E = E0 ∧ OnTrack)
18 / 32
Line
def
≡ {x′ = v · dx, y′ = v · dy, v′ = −dy · g & InBounds(x1, x2, y1, y2)} ⇓Subst Line(1, 0, . . .)
def
≡ {x′ = v · 1, y′ = v · 0, v′ = −0 · g & InBounds(0, 100, 200, 200)}
19 / 32
Example: J1 ≡ (x = y) J2 ≡
20 / 32
Top Thrill Steel Phantom (6.5g) Backyard El Toro Phantom’s Revenge (3.5g) Lil’ Phantom
21 / 32
Stats: CoasterX Max Previous Max (Est.) Components 56 > 3 Fml size 52KB > 6.5KB Proof Steps 20M (29K w/ reuse) > 100K
22 / 32
37 57 107 192 232 256 500 1000 1500 # vars time(s) Runtime vs. Problem Size
(on a recent workstation)
23 / 32
Component Time # Steps Line 140s 900K Arc ≈4.5s ≈12.5K Automatic proof (Line) vastly slower than manual proof (Arcs)
24 / 32
25 / 32
Acceleration |a| ≤ ahi ⇒ Rollback 0 < vlo ≤ v Stuck 0 < vlo ≤ v Friction Wind
26 / 32
Build Detect Simulate ⇓
3D Modeling support enables lateral bounds and banking support
27 / 32
Rail Road UAV
28 / 32
GPWS Chute Pong Coaster Chess Baseball
29 / 32
Top Thrill Steel Phantom Backyard El Toro Phantom’s Revenge Lil’ Phantom
30 / 32
ASTM, Standard Practice for Design of Amusement Rides and Devices, Standard, ASTM Intl., Sep 2017. Brandon Bohrer, Adriel Luo, Xuean Chuang, and Andr´ e Platzer, CoasterX: A case study in component-driven hybrid systems proof automation, IFAC, 2018. Nathan Fulton, Stefan Mitsch, Jan-David Quesel, Marcus V¨
e Platzer, KeYmaera X: An axiomatic tactical theorem prover for hybrid systems, CADE (Berlin) (Amy Felty and Aart Middeldorp, eds.), LNCS, vol. 9195, Springer, 2015,
Nick Weisenberger, Coasters 101: An engineer’s guide to roller coaster design, 2015.
31 / 32
Gening Xu, Hujun Xin, Fengyi Lu, and Mingliang Yang, Kinematics and dynamics simulation research for roller coaster multi-body system, Advanced Materials Research, vol. 421, Trans Tech Publications, 2012, pp. 276–280.
32 / 32