diff --git a/examples/All.relast b/examples/All.relast
new file mode 100644
index 0000000000000000000000000000000000000000..56fe6de2fec686894cc1b3ee9c111040bafb468e
--- /dev/null
+++ b/examples/All.relast
@@ -0,0 +1,19 @@
+Root ::= A* B*;
+A ::= <Name>;
+B ::= <Name>;
+
+rel A.di1  -> B;
+rel A.di2? -> B;
+rel A.di3* -> B;
+
+rel A.bi1 <-> B.bi1;
+rel A.bi2 <-> B.bi2?;
+rel A.bi3 <-> B.bi3*;
+
+rel A.bi4? <-> B.bi4;
+rel A.bi5? <-> B.bi5?;
+rel A.bi6? <-> B.bi6*;
+
+rel A.bi7* <-> B.bi7;
+rel A.bi8* <-> B.bi8?;
+rel A.bi9* <-> B.bi9*;
diff --git a/examples/Rail.relast b/examples/Rail.relast
new file mode 100644
index 0000000000000000000000000000000000000000..99fd52a9edb4fd142df7b5e4a4b929d7ce78a47a
--- /dev/null
+++ b/examples/Rail.relast
@@ -0,0 +1,19 @@
+RailwayContainer ::= Route* Region*;
+
+abstract RailwayElement ::= <id:int>;
+Region : RailwayElement ::= TrackElement* Sensor*;
+Semaphore : RailwayElement ::= <Signal:Signal>;
+Route : RailwayElement ::= <Active:boolean> SwitchPosition*;
+SwitchPosition : RailwayElement ::= <Position:Position>;
+Sensor : RailwayElement;
+
+abstract TrackElement : RailwayElement;
+Segment : TrackElement ::= <Length:int> Semaphore*;
+Switch : TrackElement ::= <CurrentPosition:Position>;
+
+rel Route.requires* -> Sensor;
+rel Route.entry? -> Semaphore;
+rel Route.exit? -> Semaphore;
+rel Sensor.monitors* <-> TrackElement.monitoredBy*;
+rel TrackElement.connectsTo* -> TrackElement;
+rel SwitchPosition.target <-> Switch.positions*;