coq


What are the possible ways to define parallel composition in Coq apart from using list?


I know how to use the list to define it but expecting something other than this. Because I think it is not possible to prove associativity and commutative property if we define it using list.
Just guessing that you are asking about parallel composition of state machines. There are many ways to model them in Coq's logic, I don't know if lists are the best way...
If you define the steps as propositional relations you can compose two machines "in parallel" by creating a new inductive relation that can take a step either in one of the machines, or in the other.
This is sketch is not the most general way to write it, but hopefully it gets the idea across.
Suppose the machines can take steps between the states A, B, or C. Machine M1 behaves in one way, and M2 in another. I.e. M1 can step from A to B or C, from B to C, and from C to A. M2 can only step from A to C, and from C to A.
Inductive state : Set := A | B | C.
Inductive M1 : state -> state -> Prop :=
s1 : M1 A B | s2 : M1 A C | s3 : M1 B C | s4 : M1 C A.
Inductive M2 : state -> state -> Prop :=
ss1 : M2 A C | ss2 : M2 C A.
The we can create a new step relation for the combined system
Inductive M1M2 : (state*state) -> (state*state) -> Prop :=
| st1 s1 s1' s2: M1 s1 s1' -> M1M2 (s1, s2) (s1', s2) (* M1 takes a step *)
| st2 s1 s2 s2': M2 s2 s2' -> M1M2 (s1, s2) (s1, s2'). (* M2 takes a step *)

Related Links

Define a 'head' for coinductive type stream in Coq(without pattern matching)
How to print all the defined symbols in Coq?
How can we use relational definition in proofs in Coq?
Stuck on a simple proof about regular expressions
How to prove the arithmetic equality `3 * S (i + j) + 1 = S (3 * i + 1) + S (3 * j + 1)` in Coq?
How to apply a rewrite to the right side of a conditional without splitting on it?
All-quantified type variable in (value) constructor cannot be explicitly typed as wanted
Coq: Remove all (nested) parentheses from a sum
How to prove binary commutavity with a different definition of bin?
Coq's mathematical proof language: Rewriting in if condition
Unfolding a proof term in Coq
Is it possible to rewrite the silly2 example from the Tactics chapter of the SF book using 'rewrite' instead of 'apply'?
How do Structures with Inheritance (:>) work in Coq?
How to understand Setoid definition of category?
Compatibility of impredicative Set and function extensionality
Combining two Coq hypotheses

Categories

HOME
vim
coq
openstack
mockito
drivers
relative-path
stock
fft
adb
microservices
cross-browser
acquia
onelogin
applepay
communication
handsontable
resize
designer
clojurescript
tostring
fatal-error
finite-automata
propel
database-replication
flux
normalizr
django-cms
shared-hosting
nodatime
introduction
emulator
sylius
microsoft-r
trading
dxf
url-scheme
greendao
ping
saas
webkitspeechrecognition
srcset
lightswitch-2013
nameservers
bosh
google-cloud-endpoints-v2
exuberant-ctags
contact-form
gtrendsr
commit
lxd
repo
wallpaper
swisscomdev
web-mining
neuroscience
event-driven
email-templates
heightmap
checkboxlist
sas-jmp
angular-resource
dotcover
network-flow
atomicity
qsslsocket
celery-task
mu
lowpass-filter
statsd
orthogonal
visual-c++-2008
heidisql
gridpane
savon
mathematica-frontend
firebaseui
lttng
moveit
sigabrt
livequery
pyke
unity-networking
vhd
lib.web.mvc
cannon.js
simple-framework
rgeo
operation
unity5.2.3
device-orientation
c++03
gwidgets
android-nested-fragment
navigationservice
braille
android-2.2-froyo
ember-charts
blending
referrer
automount
viewswitcher
uiviewanimation-curve
buildr
jquery-ui-layout
netbeans-7.1
imac
mysql-error-1005
radcombobox
visitor-statistic
sproutcore-2
bespin
mtj
dbisam
ugc
lzh

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App