Skip to content

Instantly share code, notes, and snippets.

@kenwebb
Last active October 2, 2017 18:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kenwebb/1294de29fa138564794e0ded25534512 to your computer and use it in GitHub Desktop.
Save kenwebb/1294de29fa138564794e0ded25534512 to your computer and use it in GitHub Desktop.
Bigraphs 2017 02
<?xml version="1.0" encoding="UTF-8"?>
<!--Xholon Workbook http://www.primordion.com/Xholon/gwt/ MIT License, Copyright (C) Ken Webb, Mon Oct 02 2017 14:33:01 GMT-0400 (EDT)-->
<XholonWorkbook>
<Notes><![CDATA[
Xholon
------
Title: Bigraphs 2017 02
Description:
Url: http://www.primordion.com/Xholon/gwt/
InternalName: 1294de29fa138564794e0ded25534512
Keywords:
My Notes
--------
September 27, 2017
Learning bigraphs
Example from slides 7, 8, 16
- slide 16, "The anatomy of bigraphs", has terminology
Check my approach by comparing my example(s) with examples and terminology inn other Bigraph tools.
References
----------
() Robin Milner, "Bigraphs: a model for mobile agents", slides, Nov 2008
() Robin Milner, "Bigraphs: a model for mobile agents", lecture notes, Nov 2008
() http://bigraph.org/
includes a list of Bigraph tools
() https://github.com/ale-f/big-red
Big Red
A graphical development environment for bigraphs, built upon Eclipse.
examples: airport, printing
models are specified using XML, so it's quite similar to my Xholon syntax
() https://en.wikipedia.org/wiki/Bigraph
() http://www.dcs.gla.ac.uk/~michele/bigrapher.html
BigraphER (Bigraph Evaluator & Rewriting) is an implementation of Robin Milner's Bigraphical Reactive System (BRS) with an extension to bigraph with sharing.
written in OCaml; uses OCaml syntax
]]></Notes>
<_-.XholonClass>
<PhysicalSystem/>
<!--
<Bigraph/>
<Bigraphs/>
-->
<!-- all bigraphs should just be called "Bigraph" -->
<!--<GroundBigraph superClass="Bigraph"/>
<ContextualBigraph superClass="Bigraph"/>-->
<PlaceGraph/>
<LinkGraph/>
<PlaceBG>
<RootBG/> <!-- or RegionBG -->
<NodeBG/>
<!--<SiteBG already part of the Bigraph mechanism/>-->
</PlaceBG>
<LinkBG>
<HyperedgeBG/> <!-- or EdgeBG -->
<OuterNameBG/>
</LinkBG>
<PointBG>
<PortBG/>
<InnerNameBG/>
</PointBG>
<ControlBG/>
<ComposerBG/> <!-- composes 2 bigraphs to produce a resulting bigraph -->
</_-.XholonClass>
<xholonClassDetails>
<Avatar><Color>rgba(255,215,0,0.8)</Color></Avatar>
<Hyperedge xhType="XhtypePureActiveObject"/>
</xholonClassDetails>
<PhysicalSystem>
<Bigraphs>
<!-- GroundBigraph -->
<Bigraph roleName="F" interface="∈ → ⟨3,{x,x'}⟩">
<PlaceGraph>
<RootBG roleName="0"><NodeBG roleName="v1"/></RootBG>
<RootBG roleName="1"><NodeBG roleName="v3"/></RootBG>
<RootBG roleName="2"><NodeBG roleName="v5"/></RootBG>
</PlaceGraph>
<LinkGraph>
<OuterNameBG roleName="x"/>
<OuterNameBG roleName="x'"/>
<HyperedgeBG roleName="e1" nodenames="v1,v3"/>
<HyperedgeBG roleName="e101" nodenames="v1,x"/>
<HyperedgeBG roleName="e102" nodenames="v3,v5,x'"/>
</LinkGraph>
</Bigraph>
<!-- ContextualBigraph -->
<Bigraph roleName="H" interface="⟨3,{x,x'}⟩ → ⟨2,∅⟩">
<PlaceGraph>
<RootBG roleName="0">
<NodeBG roleName="v0">
<SiteBG roleName="0"/>
<NodeBG roleName="v2">
<SiteBG roleName="1"/>
</NodeBG>
</NodeBG>
</RootBG>
<RootBG roleName="1">
<NodeBG roleName="v4">
<SiteBG roleName="2"/>
</NodeBG>
</RootBG>
</PlaceGraph>
<LinkGraph>
<InnerNameBG roleName="x"/>
<InnerNameBG roleName="x'"/>
<HyperedgeBG roleName="e0" nodenames="v0,v4,x"/>
<HyperedgeBG roleName="e2" nodenames="v4,x'"/>
</LinkGraph>
</Bigraph>
</Bigraphs>
<!--
Category Theory (CT) terminology: "H following F"; "apply F then apply H"; as specified by the bigraph interfaces
The interface attributes suggest that there are 3 CT objects, and 2 CT morphisms/arrows.
∈ → ⟨3,{x,x'}⟩ → ⟨2,∅⟩
H is: ∈ → ⟨2,∅⟩
But Composer will work by moving parts of F into H to create G.
Or I could create a new Bigraph G, and then copy H into G, while resolving sites in H using roots in F.
-->
<ComposerBG roleName="G = H ∘ F"/>
</PhysicalSystem>
<Composerbehavior implName="org.primordion.xholon.base.Behavior_gwtjs"><![CDATA[
var me, beh = {
postConfigure: function() {
me = this.cnode.parent();
me.println(me.name());
}
}
]]></Composerbehavior>
<SvgClient><Attribute_String roleName="svgUri"><![CDATA[data:image/svg+xml,
<svg width="100" height="50" xmlns="http://www.w3.org/2000/svg">
<g>
<title>Bigraphs</title>
<rect id="PhysicalSystem/Bigraphs" fill="#98FB98" height="50" width="50" x="25" y="0"/>
<g>
<title>Bigraph</title>
<rect id="PhysicalSystem/Bigraphs/Bigraph" fill="#6AB06A" height="50" width="10" x="80" y="0"/>
</g>
</g>
</svg>
]]></Attribute_String><Attribute_String roleName="setup">${MODELNAME_DEFAULT},${SVGURI_DEFAULT}</Attribute_String></SvgClient>
</XholonWorkbook>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment