About the Execution of ITS-Tools for CircadianClock-PT-001000
Execution Summary | |||||
Max Memory Used (MB) |
Time wait (ms) | CPU Usage (ms) | I/O Wait (ms) | Computed Result | Execution Status |
4118.480 | 1058629.00 | 1064681.00 | 3531.60 | FFFFFTTFFTTFFTTF | normal |
Execution Chart
We display below the execution chart for this examination (boot time has been removed).
Trace from the execution
Formatting '/data/fkordon/mcc2019-input.r030-smll-155225126700140.qcow2', fmt=qcow2 size=4294967296 backing_file='/data/fkordon/mcc2019-input.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
Waiting for the VM to be ready (probing ssh)
.....................
=====================================================================
Generated by BenchKit 2-3957
Executing tool itstools
Input is CircadianClock-PT-001000, examination is CTLFireability
Time confinement is 3600 seconds
Memory confinement is 16384 MBytes
Number of cores is 4
Run identifier is r030-smll-155225126700140
=====================================================================
--------------------
preparation of the directory to be used:
/home/mcc/execution
total 168K
-rw-r--r-- 1 mcc users 2.9K Feb 9 08:33 CTLCardinality.txt
-rw-r--r-- 1 mcc users 15K Feb 9 08:33 CTLCardinality.xml
-rw-r--r-- 1 mcc users 2.7K Feb 5 07:17 CTLFireability.txt
-rw-r--r-- 1 mcc users 16K Feb 5 07:17 CTLFireability.xml
-rw-r--r-- 1 mcc users 4.0K Mar 10 17:31 GenericPropertiesDefinition.xml
-rw-r--r-- 1 mcc users 6.2K Mar 10 17:31 GenericPropertiesVerdict.xml
-rw-r--r-- 1 mcc users 111 Feb 24 15:05 GlobalProperties.txt
-rw-r--r-- 1 mcc users 349 Feb 24 15:05 GlobalProperties.xml
-rw-r--r-- 1 mcc users 2.4K Feb 4 23:06 LTLCardinality.txt
-rw-r--r-- 1 mcc users 9.6K Feb 4 23:06 LTLCardinality.xml
-rw-r--r-- 1 mcc users 2.1K Feb 4 22:32 LTLFireability.txt
-rw-r--r-- 1 mcc users 9.2K Feb 4 22:32 LTLFireability.xml
-rw-r--r-- 1 mcc users 3.3K Feb 2 01:43 ReachabilityCardinality.txt
-rw-r--r-- 1 mcc users 16K Feb 2 01:43 ReachabilityCardinality.xml
-rw-r--r-- 1 mcc users 3.4K Jan 29 15:22 ReachabilityFireability.txt
-rw-r--r-- 1 mcc users 20K Jan 29 15:22 ReachabilityFireability.xml
-rw-r--r-- 1 mcc users 1.7K Feb 4 22:18 UpperBounds.txt
-rw-r--r-- 1 mcc users 3.8K Feb 4 22:18 UpperBounds.xml
-rw-r--r-- 1 mcc users 6 Jan 29 09:34 equiv_col
-rw-r--r-- 1 mcc users 7 Jan 29 09:34 instance
-rw-r--r-- 1 mcc users 6 Jan 29 09:34 iscolored
-rw-r--r-- 1 mcc users 11K Mar 10 17:31 model.pnml
--------------------
content from stdout:
=== Data for post analysis generated by BenchKit (invocation template)
The expected result is a vector of booleans
BOOL_VECTOR
here is the order used to build the result vector(from text file)
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-00
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-01
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-02
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-03
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-04
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-05
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-06
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-07
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-08
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-09
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-10
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-11
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-12
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-13
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-14
FORMULA_NAME CircadianClock-PT-001000-CTLFireability-15
=== Now, execution of the tool begins
BK_START 1552493943942
Invoking ITS tools like this :CommandLine [args=[/home/mcc/BenchKit/itstools/plugins/fr.lip6.move.gal.itstools.binaries_1.0.0.201903111103/bin/its-ctl-linux64, --gc-threshold, 2000000, --quiet, -i, /home/mcc/execution/CTLFireability.pnml.gal, -t, CGAL, -ctl, /home/mcc/execution/CTLFireability.ctl], workingDir=/home/mcc/execution]
its-ctl command run as :
/home/mcc/BenchKit/itstools/plugins/fr.lip6.move.gal.itstools.binaries_1.0.0.201903111103/bin/its-ctl-linux64 --gc-threshold 2000000 --quiet -i /home/mcc/execution/CTLFireability.pnml.gal -t CGAL -ctl /home/mcc/execution/CTLFireability.ctl
No direction supplied, using forward translation only.
Parsed 16 CTL formulae.
Model ,|S| ,Time ,Mem(kb) ,fin. SDD ,fin. DDD ,peak SDD ,peak DDD ,SDD Hom ,SDD cache peak ,DDD Hom ,DDD cachepeak ,SHom cache
reachable,4.02004e+15,269.253,2315328,2,5017,5,1.38574e+07,6,0,75,1.50378e+07,0
Converting to forward existential form...Done !
original formula: (AX(AF(((mr>=1)&&(r_cap>=1)))) + EG(EF((((dr_a>=1)&&(a_cap>=1))&&((a>=1)&&(dr>=1))))))
=> equivalent forward existential formula: [FwdG(EY((Init * !(EG(E(TRUE U (((dr_a>=1)&&(a_cap>=1))&&((a>=1)&&(dr>=1)))))))),!(((mr>=1)&&(r_cap>=1))))] = FALSE
Reverse transition relation is exact ! Faster fixpoint algorithm enabled.
Hit Full ! (commute/partial/dont) 9/0/7
(forward)formula 0,0,275.867,2315328,1,0,9,1.38574e+07,29,2,10361,1.50378e+07,10
FORMULA CircadianClock-PT-001000-CTLFireability-00 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: (!(EF((a>=1))) + EF((((!((da>=1)&&(ma_cap>=1)))&&(((ma>=1)&&(a_cap>=1))&&(ma>=1))) * AG(((a>=1)&&(dr>=1))))))
=> equivalent forward existential formula: [(FwdU((Init * !(E(TRUE U (((!((da>=1)&&(ma_cap>=1)))&&(((ma>=1)&&(a_cap>=1))&&(ma>=1))) * !(E(TRUE U !(((a>=1)&&(dr>=1))))))))),TRUE) * (a>=1))] = FALSE
(forward)formula 1,0,481.293,2443468,1,0,12,1.41999e+07,10,2,10209,1.61418e+07,2
FORMULA CircadianClock-PT-001000-CTLFireability-01 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: E(!(EG((((a>=1)&&(r>=1))&&(c_cap>=1)))) U AG((((c>=1)&&(r_cap>=1))||(r>=1))))
=> equivalent forward existential formula: [(FwdU(Init,!(EG((((a>=1)&&(r>=1))&&(c_cap>=1))))) * !(E(TRUE U !((((c>=1)&&(r_cap>=1))||(r>=1))))))] != FALSE
(forward)formula 2,0,586.911,3222120,1,0,12,1.68836e+07,10,2,10228,1.98763e+07,2
FORMULA CircadianClock-PT-001000-CTLFireability-02 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: ((((((c>=1)&&(r_cap>=1))&&((da>=1)&&(ma_cap>=1)))||(((da_a>=1)&&(a_cap>=1))||((da>=1)&&(a>=1)))) + AG(EX(((da>=1)&&(ma_cap>=1))))) + ((mr>=1)&&(r_cap>=1)))
=> equivalent forward existential formula: [(FwdU(((Init * !(((mr>=1)&&(r_cap>=1)))) * !(((((c>=1)&&(r_cap>=1))&&((da>=1)&&(ma_cap>=1)))||(((da_a>=1)&&(a_cap>=1))||((da>=1)&&(a>=1)))))),TRUE) * !(EX(((da>=1)&&(ma_cap>=1)))))] = FALSE
(forward)formula 3,0,795.501,3542352,1,0,12,2.12395e+07,9,3,10209,2.41082e+07,2
FORMULA CircadianClock-PT-001000-CTLFireability-03 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: EF(AG((((ma>=1)||((ma>=1)&&(a_cap>=1)))||(ma>=1))))
=> equivalent forward existential formula: [(FwdU(Init,TRUE) * !(E(TRUE U !((((ma>=1)||((ma>=1)&&(a_cap>=1)))||(ma>=1))))))] != FALSE
(forward)formula 4,0,803.433,3542352,1,0,12,2.12395e+07,15,3,10258,2.41082e+07,5
FORMULA CircadianClock-PT-001000-CTLFireability-04 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: AG(EF(((da_a>=1)&&(a_cap>=1))))
=> equivalent forward existential formula: [(FwdU(Init,TRUE) * !(E(TRUE U ((da_a>=1)&&(a_cap>=1)))))] = FALSE
(forward)formula 5,1,803.466,3542352,1,0,12,2.12395e+07,16,3,10259,2.41082e+07,8
FORMULA CircadianClock-PT-001000-CTLFireability-05 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: !((((da_a>=1)&&(ma_cap>=1)) + EF(AG(((da_a>=1)&&(a_cap>=1))))))
=> equivalent forward existential formula: [((Init * !(((da_a>=1)&&(ma_cap>=1)))) * !(E(TRUE U !(E(TRUE U !(((da_a>=1)&&(a_cap>=1))))))))] != FALSE
(forward)formula 6,1,803.483,3542352,1,0,12,2.12395e+07,19,3,10264,2.41082e+07,12
FORMULA CircadianClock-PT-001000-CTLFireability-06 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: EF((((((dr>=1)&&(mr_cap>=1))&&(((a>=1)&&(dr>=1))||((da_a>=1)&&(a_cap>=1))))&&(((mr>=1)||((da_a>=1)&&(ma_cap>=1)))&&(((da_a>=1)&&(a_cap>=1))||(mr>=1)))) * (AX(((da>=1)&&(a>=1))) * EG(((da>=1)&&(a>=1))))))
=> equivalent forward existential formula: [FwdG(((FwdU(Init,TRUE) * ((((dr>=1)&&(mr_cap>=1))&&(((a>=1)&&(dr>=1))||((da_a>=1)&&(a_cap>=1))))&&(((mr>=1)||((da_a>=1)&&(ma_cap>=1)))&&(((da_a>=1)&&(a_cap>=1))||(mr>=1))))) * !(EX(!(((da>=1)&&(a>=1)))))),((da>=1)&&(a>=1)))] != FALSE
(forward)formula 7,0,803.681,3542352,1,0,12,2.12395e+07,28,3,10277,2.41082e+07,15
FORMULA CircadianClock-PT-001000-CTLFireability-07 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: (E(!((((c>=1)&&(r_cap>=1))||((dr_a>=1)&&(a_cap>=1)))) U AG(((ma>=1)&&(a_cap>=1)))) * AX(E(((da_a>=1)&&(a_cap>=1)) U ((dr>=1)&&(mr_cap>=1)))))
=> equivalent forward existential formula: ([(Init * !(E(!((((c>=1)&&(r_cap>=1))||((dr_a>=1)&&(a_cap>=1)))) U !(E(TRUE U !(((ma>=1)&&(a_cap>=1))))))))] = FALSE * [(EY(Init) * !(E(((da_a>=1)&&(a_cap>=1)) U ((dr>=1)&&(mr_cap>=1)))))] = FALSE)
Hit Full ! (commute/partial/dont) 8/6/8
(forward)formula 8,0,815.645,3542352,1,0,17,2.12395e+07,44,4,10326,2.41082e+07,23
FORMULA CircadianClock-PT-001000-CTLFireability-08 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: AG(!(AG((((ma>=1)&&(a_cap>=1))||(a>=1)))))
=> equivalent forward existential formula: [(FwdU(Init,TRUE) * !(E(TRUE U !((((ma>=1)&&(a_cap>=1))||(a>=1))))))] = FALSE
(forward)formula 9,1,818.358,3542352,1,0,18,2.12395e+07,46,4,10328,2.41082e+07,26
FORMULA CircadianClock-PT-001000-CTLFireability-09 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: EF(!(((!(((dr_a>=1)&&(mr_cap>=1))&&((mr>=1)&&(r_cap>=1))))||((((c>=1)&&(r_cap>=1))||((ma>=1)&&(a_cap>=1)))||((dr_a>=1)&&(a_cap>=1))))))
=> equivalent forward existential formula: [(FwdU(Init,TRUE) * !(((!(((dr_a>=1)&&(mr_cap>=1))&&((mr>=1)&&(r_cap>=1))))||((((c>=1)&&(r_cap>=1))||((ma>=1)&&(a_cap>=1)))||((dr_a>=1)&&(a_cap>=1))))))] != FALSE
(forward)formula 10,1,818.437,3542352,1,0,20,2.12395e+07,48,6,10340,2.41082e+07,27
FORMULA CircadianClock-PT-001000-CTLFireability-10 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: (EF(AG(((a>=1)&&((dr>=1)&&(mr_cap>=1))))) + (((mr>=1)&&(r_cap>=1))||(ma>=1)))
=> equivalent forward existential formula: ([(FwdU(Init,TRUE) * !(E(TRUE U !(((a>=1)&&((dr>=1)&&(mr_cap>=1)))))))] != FALSE + [(Init * (((mr>=1)&&(r_cap>=1))||(ma>=1)))] != FALSE)
(forward)formula 11,0,818.469,3542352,1,0,22,2.12395e+07,51,6,10346,2.41082e+07,31
FORMULA CircadianClock-PT-001000-CTLFireability-11 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: !(((!(EF((((a>=1)&&(r>=1))&&(c_cap>=1)))) * !(((mr>=1)&&(r_cap>=1)))) + ((dr>=1)&&(mr_cap>=1))))
=> equivalent forward existential formula: ([(FwdU((Init * !(((dr>=1)&&(mr_cap>=1)))),TRUE) * (((a>=1)&&(r>=1))&&(c_cap>=1)))] != FALSE + [((Init * !(((dr>=1)&&(mr_cap>=1)))) * ((mr>=1)&&(r_cap>=1)))] != FALSE)
(forward)formula 12,0,818.483,3542352,1,0,25,2.12395e+07,54,6,10349,2.41082e+07,34
FORMULA CircadianClock-PT-001000-CTLFireability-12 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
original formula: EF(((c>=1)&&(r_cap>=1)))
=> equivalent forward existential formula: [(FwdU(Init,TRUE) * ((c>=1)&&(r_cap>=1)))] != FALSE
(forward)formula 13,1,818.488,3542352,1,0,27,2.12395e+07,55,7,10349,2.41082e+07,35
FORMULA CircadianClock-PT-001000-CTLFireability-13 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: EG(!(E((a>=1) U ((da_a>=1)&&(a_cap>=1)))))
=> equivalent forward existential formula: [FwdG(Init,!(E((a>=1) U ((da_a>=1)&&(a_cap>=1)))))] != FALSE
Hit Full ! (commute/partial/dont) 9/0/7
(forward)formula 14,1,1052.81,3894792,1,0,4713,2.12395e+07,10,4693,6196,2.74421e+07,1320
FORMULA CircadianClock-PT-001000-CTLFireability-14 TRUE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is TRUE !
***************************************
original formula: ((da_a>=1)&&(ma_cap>=1))
=> equivalent forward existential formula: [(Init * ((da_a>=1)&&(ma_cap>=1)))] != FALSE
(forward)formula 15,0,1052.81,3894792,1,0,4713,2.12395e+07,11,4693,6198,2.74421e+07,1321
FORMULA CircadianClock-PT-001000-CTLFireability-15 FALSE TECHNIQUES DECISION_DIAGRAMS TOPOLOGICAL
Formula is FALSE !
***************************************
ITS tools runner thread asked to quit. Dying gracefully.
BK_STOP 1552495002571
--------------------
content from stderr:
+ export BINDIR=/home/mcc/BenchKit/
+ BINDIR=/home/mcc/BenchKit/
++ pwd
+ export MODEL=/home/mcc/execution
+ MODEL=/home/mcc/execution
+ [[ CTLFireability = StateSpace ]]
+ /home/mcc/BenchKit//runeclipse.sh /home/mcc/execution CTLFireability -its -ltsminpath /home/mcc/BenchKit//lts_install_dir/ -smt
+ ulimit -s 65536
+ [[ -z '' ]]
+ export LTSMIN_MEM_SIZE=8589934592
+ LTSMIN_MEM_SIZE=8589934592
+ /home/mcc/BenchKit//itstools/its-tools -data /home/mcc/execution/workspace -pnfolder /home/mcc/execution -examination CTLFireability -z3path /home/mcc/BenchKit//z3/bin/z3 -yices2path /home/mcc/BenchKit//yices/bin/yices -its -ltsminpath /home/mcc/BenchKit//lts_install_dir/ -smt -vmargs -Dosgi.locking=none -Declipse.stateSaveDelayInterval=-1 -Dosgi.configuration.area=/tmp/.eclipse -Xss8m -Xms40m -Xmx8192m -Dfile.encoding=UTF-8 -Dosgi.requiredJavaVersion=1.6
Mar 13, 2019 4:19:06 PM fr.lip6.move.gal.application.Application start
INFO: Running its-tools with arguments : [-pnfolder, /home/mcc/execution, -examination, CTLFireability, -z3path, /home/mcc/BenchKit//z3/bin/z3, -yices2path, /home/mcc/BenchKit//yices/bin/yices, -its, -ltsminpath, /home/mcc/BenchKit//lts_install_dir/, -smt]
Mar 13, 2019 4:19:07 PM fr.lip6.move.gal.application.MccTranslator transformPNML
INFO: Parsing pnml file : /home/mcc/execution/model.pnml
Mar 13, 2019 4:19:07 PM fr.lip6.move.gal.nupn.PTNetReader loadFromXML
INFO: Load time of PNML (sax parser for PT used): 33 ms
Mar 13, 2019 4:19:07 PM fr.lip6.move.gal.pnml.togal.PTGALTransformer handlePage
INFO: Transformed 14 places.
Mar 13, 2019 4:19:07 PM fr.lip6.move.gal.pnml.togal.PTGALTransformer handlePage
INFO: Transformed 16 transitions.
Mar 13, 2019 4:19:07 PM fr.lip6.move.serialization.SerializationUtil systemToFile
INFO: Time to serialize gal into /home/mcc/execution/model.pnml.img.gal : 7 ms
Mar 13, 2019 4:19:07 PM fr.lip6.move.gal.instantiate.GALRewriter flatten
INFO: Flatten gal took : 29 ms
Mar 13, 2019 4:19:07 PM fr.lip6.move.serialization.SerializationUtil systemToFile
INFO: Time to serialize gal into /home/mcc/execution/CTLFireability.pnml.gal : 1 ms
Mar 13, 2019 4:19:07 PM fr.lip6.move.serialization.SerializationUtil serializePropertiesForITSCTLTools
INFO: Time to serialize properties into /home/mcc/execution/CTLFireability.ctl : 3 ms
Sequence of Actions to be Executed by the VM
This is useful if one wants to reexecute the tool in the VM from the submitted image disk.
set -x
# this is for BenchKit: configuration of major elements for the test
export BK_INPUT="CircadianClock-PT-001000"
export BK_EXAMINATION="CTLFireability"
export BK_TOOL="itstools"
export BK_RESULT_DIR="/tmp/BK_RESULTS/OUTPUTS"
export BK_TIME_CONFINEMENT="3600"
export BK_MEMORY_CONFINEMENT="16384"
# this is specific to your benchmark or test
export BIN_DIR="$HOME/BenchKit/bin"
# remove the execution directoty if it exists (to avoid increse of .vmdk images)
if [ -d execution ] ; then
rm -rf execution
fi
# this is for BenchKit: explicit launching of the test
echo "====================================================================="
echo " Generated by BenchKit 2-3957"
echo " Executing tool itstools"
echo " Input is CircadianClock-PT-001000, examination is CTLFireability"
echo " Time confinement is $BK_TIME_CONFINEMENT seconds"
echo " Memory confinement is 16384 MBytes"
echo " Number of cores is 4"
echo " Run identifier is r030-smll-155225126700140"
echo "====================================================================="
echo
echo "--------------------"
echo "preparation of the directory to be used:"
tar xzf /home/mcc/BenchKit/INPUTS/CircadianClock-PT-001000.tgz
mv CircadianClock-PT-001000 execution
cd execution
if [ "CTLFireability" = "GlobalProperties" ] ; then
rm -f GenericPropertiesVerdict.xml
fi
if [ "CTLFireability" = "UpperBounds" ] ; then
rm -f GenericPropertiesVerdict.xml
fi
pwd
ls -lh
echo
echo "--------------------"
echo "content from stdout:"
echo
echo "=== Data for post analysis generated by BenchKit (invocation template)"
echo
if [ "CTLFireability" = "UpperBounds" ] ; then
echo "The expected result is a vector of positive values"
echo NUM_VECTOR
elif [ "CTLFireability" != "StateSpace" ] ; then
echo "The expected result is a vector of booleans"
echo BOOL_VECTOR
else
echo "no data necessary for post analysis"
fi
echo
if [ -f "CTLFireability.txt" ] ; then
echo "here is the order used to build the result vector(from text file)"
for x in $(grep Property CTLFireability.txt | cut -d ' ' -f 2 | sort -u) ; do
echo "FORMULA_NAME $x"
done
elif [ -f "CTLFireability.xml" ] ; then # for cunf (txt files deleted;-)
echo echo "here is the order used to build the result vector(from xml file)"
for x in $(grep '
echo "FORMULA_NAME $x"
done
fi
echo
echo "=== Now, execution of the tool begins"
echo
echo -n "BK_START "
date -u +%s%3N
echo
timeout -s 9 $BK_TIME_CONFINEMENT bash -c "/home/mcc/BenchKit/BenchKit_head.sh 2> STDERR ; echo ; echo -n \"BK_STOP \" ; date -u +%s%3N"
if [ $? -eq 137 ] ; then
echo
echo "BK_TIME_CONFINEMENT_REACHED"
fi
echo
echo "--------------------"
echo "content from stderr:"
echo
cat STDERR ;