CUFP 2012 / Using F# to Prove Stabilization of Biological Networks
Please RSVP for instructions on how to join the event.
Description
BMA is a tool for modeling and analyzing Systems Biology models, such as cellular-level descriptions of skin and blood.
One important property that these biological artifacts have is homeostasis or stability. Stability in skin, for instance, means that the epidermis is dividing at the same rate that the surface is losing cells; instability, in contrast, means either cancer or surface sores.
A tool that verifies stability is, we hope, part of a development to target drugs better, by identifying the cellular components that enable stability. The whole endeavor can be seen as an EDA for biology.
In this talk, I will describe the F# implementation of the stabilization prover of BMA.
The prover checks that, regardless of the initial values the model's variables, there is one stability point that the model always reaches and then remains in. The complexity of this analysis stems from the high number of possible states of such a system. Yet the BMA prover scales by composing a lot of local, small proofs together. The prover's underlying procedure is based on mathematical techniques for the specification and verification of properties in concurrent systems.
Though this domain (automatically proving properties of systems) is one that is known to be amenable to functional programming techniques, the BMA implementation exploits several F# features. Almost all the data structures are immutable collections like Set and Map. The main fixed-point loop is implemented using the Seq lazy sequences library: transforming the loop from a recursive function to a Seq.fold was quick, yielding code that is elegantly asynchronous, and allows the C#-based UI to pause, step, and fast-forward the proof search.
The analyzer also uses FParsec (a parser combinator library) to parse the definition of the model's update functions, and Z3 (an SMT solver) to generate counter-examples to stability.
I am normally an Emacs/OCaml functional programmer. I'll also compare my development experience of Visual Studio/F#.
Outline
No outline is available
Recording
Samin Ishtiaq (samin.ishtiaq)

8.0k

No bio is available.
For a complete view of this profile,
including education, work experience and developer information,
you need to be logged in and have a subscription.
Samin's upcoming trainings
No events
Samin's past online trainings
Free
Sep 13-15, 2012
Functional programming has been at the forefront of a new generation of programming technologies: Companies employing functional programming use it to enable more effective, robust, and flexible software development.
Free
Online
Tuesday, January 18, 2011
Samin Ishtiaq taught a 1 hour crash course in functional programming to 10/11 year olds at a local Cambridge primary school recently. The course leads up to calculating areas and volumes, which is what the students were learning in maths at that time. This...
Samin's blog posts
Course tags
- f# × 13
- functional × 4
- erlang × 3
- http × 2
- introduction × 2
- web × 2
- websharper × 2
- agents × 1
- asp.net × 1
- asp.net mvc × 1
- async × 1
- beginners,, × 1
- c# × 1
- clojure × 1
- concurrent × 1
- distributed programming × 1
- erlang express × 1
- erlang for beginners × 1
- erlang, × 1
- ets × 1
- for, × 1
- haskell × 1
- linq × 1
- ocaml × 1
- otp × 1
- otp, × 1
- pit fw × 1
- scala × 1
- servicestack × 1
- silverlight × 1
- single page application × 1
- web api × 1
- workflows × 1
Featured Courses
Learning F# - Basics
Get started with F# quickly and effectively.F# Programming I
Part I of a comprehensive 3-part introduction to the F# programming language.F# Programming II
Part II of a comprehensive 3-part introduction to the F# programming language.F# Programming III
Part III of a comprehensive 3-part introduction to the F# programming language.Understanding Functional Programming
Master functional programming concepts that jumpstart your productivity.Introduction to WebSharper
Learn how to use WebSharper for real-life web applications.
![]() |
Copyright (c) 2011-2012 IntelliFactory. All rights reserved. Home | Products | Consulting | Trainings | Blogs | Jobs | Contact Us | Terms of Use | Privacy Policy | Cookie Policy |
Built with WebSharper |