{"id":14,"date":"2017-02-17T10:55:38","date_gmt":"2017-02-17T09:55:38","guid":{"rendered":"https:\/\/tapas.labri.fr\/wp\/?page_id=14"},"modified":"2017-02-23T14:14:20","modified_gmt":"2017-02-23T13:14:20","slug":"satafprestaf-libraries","status":"publish","type":"page","link":"https:\/\/tapas.labri.fr\/wp\/?page_id=14","title":{"rendered":"SATAF\/PresTAF libraries"},"content":{"rendered":"<p><strong>SATAF<\/strong> is a library implementing <strong>Shared Automata<\/strong>. This data-structure has been proposed by <a class=\"ext-link\" href=\"http:\/\/www.univ-orleans.fr\/lifo\/Membres\/couvreur\/\"><span class=\"icon\">\u200b<\/span>J.-M. Couvreur<\/a> in [<a class=\"wiki\" href=\"#fn1\">1<\/a>]. The prototype of J.-M. Couvreur, called PresTAF (written in Java), has been rewritten using the C language and splitted into two libraries:<\/p>\n<ul>\n<li><a href=\"\/apis\/current\/html\/sataf.html\">SATAF<\/a> that is the core implementation of the shared-automata data-structure;<\/li>\n<li>and <a class=\"wiki\" href=\"\/apis\/current\/html\/prestaf-formula_8h.html\">PresTAF<\/a> that is an implementation of a Presburger solver\/synthesizer based on shared-automata.<\/li>\n<\/ul>\n<p>PresTAF comes with a <a href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=13\">GENEPI<\/a> plugin. This plugin can be used in any tool based on the generic solver for Presburger formulas proposed by <a href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=13\">GENEPI<\/a>. Among these tools there is:<\/p>\n<ul>\n<li><a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=23\">FAST<\/a> the model-checker based on acceleration techniques developed by J. Leroux [<a class=\"wiki\" href=\"#fn2\">2<\/a>];<\/li>\n<li>and <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=20\"> distiller<\/a>, the solver for the <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=17\">Armoise<\/a> language.<\/li>\n<\/ul>\n<p>To our knowledge, PresTAF is the only tool that is able to synthesize [<a class=\"wiki\" href=\"#fn3\">3<\/a>] a Presburger formula (using the <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=17\">Armoise<\/a> high-level language) from a binary automaton.<\/p>\n<h2 id=\"Benchmarks\">Benchmarks<\/h2>\n<p>As written above, the PresTAF library comes with a <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=13\">GENEPI<\/a> plugin. Using this plugin we have submitted the PresTAF solver to two kinds benchmarks:<\/p>\n<ul>\n<li>First we compare performances of our plugin to others using <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=23\">FASTer<\/a> and <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=20\">distiller<\/a>.<\/li>\n<li>Second we measure performances of the Presburger formula synthesizer (see <a href=\"https:\/\/tapas.labri.fr\/wp\/\">TaPAS<\/a>).<\/li>\n<\/ul>\n<p>The benchmarks related to comparisons of plugins are given on the pages of <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=23\">FASTer<\/a> and <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=20\">distiller<\/a>. Below we give two tables that gather the results of the formula synthesizer used on automata obtained by two different kinds of computation:<\/p>\n<ul>\n<li>In the first case, automata are computed from an <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=17\">Armoise<\/a> formula.<\/li>\n<li>In the second case, automata are obtained with <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=23\">FASTer<\/a> after a long sequence of operations that corresponds to the computation of a fixpoint a state space.<\/li>\n<\/ul>\n<p>Each process (<a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=20\">distiller<\/a> or <a href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=23\">FASTer<\/a>) was allocated a budget of 4.5 GB and 5 minutes of CPU times. <em>ERR<\/em> indicates an abnormal termination of the program due to the consumption of its memory or time limit. The benchmarks was executed on a 64 bits machine equipped with an Intel\u00ae Xeon\u00ae 2.33 GHz CPU and 8 GB of memory. CPU Execution times are expressed in seconds and were computed with the <tt>time<\/tt> command of the <tt>bash<\/tt> shell.<\/p>\n<p>In the tables below, columns have the following meaning:<\/p>\n<ul>\n<li><em>file<\/em> is the input file. Files used for the benchmark are distributed within the packages of <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=20\">distiller<\/a> or <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=23\">FASTer<\/a>;<\/li>\n<li><em>formula size in nodes<\/em> is the number of nodes of the syntactic tree encoding the generated formula;<\/li>\n<li><em>formula size in chars<\/em> is the size of file generated for the formula;<\/li>\n<li><em>automata size<\/em> is the number of states<a class=\"missing changeset\" title=\"Le d\u00e9p\u00f4t par d\u00e9faut n'est pas d\u00e9fini\" href=\"#fn4\">[4]<\/a> of the <a class=\"wiki\" href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=14\">shared-automaton<\/a> used for the computation;<\/li>\n<li><em>total time<\/em> is the total amount of time until termination of the process;<\/li>\n<li><em>synthesis time<\/em> is the time passed to synthesis the formula.<\/li>\n<\/ul>\n<h2>PresTAF plugin used to solve Armoise formulas<\/h2>\n<table class=\"wiki\" style=\"height: 585px;\" width=\"627\">\n<tbody>\n<tr>\n<td><strong>File<\/strong><\/td>\n<td><strong>formula size in nodes<\/strong><\/td>\n<td><strong>formula size in chars<\/strong><\/td>\n<td><strong>automata size<\/strong><\/td>\n<td><strong>total time<\/strong><\/td>\n<td><strong>synthesis time<\/strong><\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-01<\/a><\/td>\n<td>63<\/td>\n<td>344<\/td>\n<td>4620<\/td>\n<td>10.16<\/td>\n<td>10.01<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-02<\/a><\/td>\n<td>155<\/td>\n<td>628<\/td>\n<td>147378<\/td>\n<td>8.23<\/td>\n<td>7.25<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-03<\/a><\/td>\n<td>6893<\/td>\n<td>29060<\/td>\n<td>10158<\/td>\n<td>10.13<\/td>\n<td>9.86<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-04<\/a><\/td>\n<td>44<\/td>\n<td>304<\/td>\n<td>51135<\/td>\n<td>2.08<\/td>\n<td>1.68<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-05<\/a><\/td>\n<td>67<\/td>\n<td>364<\/td>\n<td>2715<\/td>\n<td>22.58<\/td>\n<td>20.93<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-06<\/a><\/td>\n<td>248<\/td>\n<td>910<\/td>\n<td>16530<\/td>\n<td>1.91<\/td>\n<td>0.35<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-07<\/a><\/td>\n<td>372<\/td>\n<td>1710<\/td>\n<td>4320<\/td>\n<td>1.84<\/td>\n<td>1.6<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-08<\/a><\/td>\n<td>75<\/td>\n<td>396<\/td>\n<td>33335<\/td>\n<td>2.13<\/td>\n<td>1.15<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-09<\/a><\/td>\n<td>71<\/td>\n<td>392<\/td>\n<td>63154<\/td>\n<td>2.42<\/td>\n<td>1.97<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-10<\/a><\/td>\n<td>48<\/td>\n<td>295<\/td>\n<td>315<\/td>\n<td>0.23<\/td>\n<td>0.06<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-11<\/a><\/td>\n<td>17<\/td>\n<td>200<\/td>\n<td>3<\/td>\n<td>0.19<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-12<\/a><\/td>\n<td>85<\/td>\n<td>478<\/td>\n<td>9<\/td>\n<td>0.19<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-13<\/a><\/td>\n<td>40<\/td>\n<td>282<\/td>\n<td>946<\/td>\n<td>0.31<\/td>\n<td>0.13<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">bench-14<\/a><\/td>\n<td>225<\/td>\n<td>1029<\/td>\n<td>1024<\/td>\n<td>0.85<\/td>\n<td>0.65<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2 id=\"PresTAFpluginusedtocomputereachablesetsofstateswithFASTer\">PresTAF plugin used to compute reachable sets of states with FASTer<\/h2>\n<table class=\"wiki\">\n<tbody>\n<tr>\n<td><strong>File<\/strong><\/td>\n<td><strong>formula size in nodes<\/strong><\/td>\n<td><strong>formula size in chars<\/strong><\/td>\n<td><strong>automata size<\/strong><\/td>\n<td><strong>total time<\/strong><\/td>\n<td><strong>synthesis time<\/strong><\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">barber<\/a><\/td>\n<td>365<\/td>\n<td>1600<\/td>\n<td>36<\/td>\n<td>0.36<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">berkeley<\/a><\/td>\n<td>239<\/td>\n<td>1189<\/td>\n<td>29<\/td>\n<td>0.24<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">BoigelotLegayWolperCAV03.without_strategy<\/a><\/td>\n<td>369<\/td>\n<td>1327<\/td>\n<td>523<\/td>\n<td>25.50<\/td>\n<td>0.03<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">BoigelotLegayWolperCAV03.with_strategy<\/a><\/td>\n<td>369<\/td>\n<td>1327<\/td>\n<td>523<\/td>\n<td>6.06<\/td>\n<td>0.03<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">canibals_v2<\/a><\/td>\n<td>ERR<\/td>\n<td colspan=\"4\"><\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">centralserver<\/a><\/td>\n<td>793<\/td>\n<td>3167<\/td>\n<td>75<\/td>\n<td>2.52<\/td>\n<td>0.01<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">consistency<\/a><\/td>\n<td>719<\/td>\n<td>2949<\/td>\n<td>90<\/td>\n<td>71.51<\/td>\n<td>0.03<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">consistencyInv<\/a><\/td>\n<td>3380<\/td>\n<td>12503<\/td>\n<td>205<\/td>\n<td>0.69<\/td>\n<td>0.25<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">consprod<\/a><\/td>\n<td>4679<\/td>\n<td>17548<\/td>\n<td>353<\/td>\n<td>2.48<\/td>\n<td>0.01<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">consprodjava<\/a><\/td>\n<td>12895<\/td>\n<td>48470<\/td>\n<td>1967<\/td>\n<td>16.16<\/td>\n<td>2.38<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">consprodjavaN<\/a><\/td>\n<td>12895<\/td>\n<td>48470<\/td>\n<td>1967<\/td>\n<td>16.12<\/td>\n<td>2.38<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">consprodjavaNInv<\/a><\/td>\n<td>6222<\/td>\n<td>22100<\/td>\n<td>308<\/td>\n<td>2.97<\/td>\n<td>0.41<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">csm<\/a><\/td>\n<td>721<\/td>\n<td>2812<\/td>\n<td>66<\/td>\n<td>4.67<\/td>\n<td>0.02<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">csmInv<\/a><\/td>\n<td>3813<\/td>\n<td>13901<\/td>\n<td>140<\/td>\n<td>0.73<\/td>\n<td>0.03<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">dekker<\/a><\/td>\n<td>2767<\/td>\n<td>10053<\/td>\n<td>200<\/td>\n<td>4.22<\/td>\n<td>0.01<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">DRAGON<\/a><\/td>\n<td>258<\/td>\n<td>1224<\/td>\n<td>23<\/td>\n<td>0.35<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">efm<\/a><\/td>\n<td>195<\/td>\n<td>936<\/td>\n<td>26<\/td>\n<td>0.33<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">FIREFLY<\/a><\/td>\n<td>226<\/td>\n<td>1116<\/td>\n<td>28<\/td>\n<td>0.25<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">fms<\/a><\/td>\n<td>12173<\/td>\n<td>43804<\/td>\n<td>528<\/td>\n<td>14.03<\/td>\n<td>1.52<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">fmsInv<\/a><\/td>\n<td>12173<\/td>\n<td>43804<\/td>\n<td>528<\/td>\n<td>13.82<\/td>\n<td>1.32<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">futurbus<\/a><\/td>\n<td>798<\/td>\n<td>3369<\/td>\n<td>106<\/td>\n<td>0.52<\/td>\n<td>0.03<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">gb<\/a><\/td>\n<td>ERR<\/td>\n<td colspan=\"4\"><\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">ILLINOIS<\/a><\/td>\n<td>201<\/td>\n<td>985<\/td>\n<td>22<\/td>\n<td>0.30<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">incdec<\/a><\/td>\n<td>ERR<\/td>\n<td colspan=\"4\"><\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">incdecInv<\/a><\/td>\n<td>26232<\/td>\n<td>88914<\/td>\n<td>1047<\/td>\n<td>60.14<\/td>\n<td>19.33<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">kanban<\/a><\/td>\n<td>483<\/td>\n<td>1949<\/td>\n<td>31<\/td>\n<td>2.17<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">lamport<\/a><\/td>\n<td>359<\/td>\n<td>1519<\/td>\n<td>25<\/td>\n<td>0.67<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">lastinfirstserved<\/a><\/td>\n<td>560<\/td>\n<td>2275<\/td>\n<td>68<\/td>\n<td>0.46<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">lift<\/a><\/td>\n<td>881<\/td>\n<td>3817<\/td>\n<td>73<\/td>\n<td>0.51<\/td>\n<td>0.01<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">manufacturing<\/a><\/td>\n<td>130<\/td>\n<td>541<\/td>\n<td>9<\/td>\n<td>3.91<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">MESI<\/a><\/td>\n<td>188<\/td>\n<td>935<\/td>\n<td>18<\/td>\n<td>0.24<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">MOESI<\/a><\/td>\n<td>270<\/td>\n<td>1295<\/td>\n<td>33<\/td>\n<td>0.26<\/td>\n<td>0.02<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">multipoll<\/a><\/td>\n<td>10626<\/td>\n<td>39934<\/td>\n<td>612<\/td>\n<td>3.11<\/td>\n<td>0.63<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">peterson<\/a><\/td>\n<td>588<\/td>\n<td>2329<\/td>\n<td>39<\/td>\n<td>1.18<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">PRODUCER-CONSUMMER<\/a><\/td>\n<td>77<\/td>\n<td>389<\/td>\n<td>35<\/td>\n<td>0.23<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">readwrit<\/a><\/td>\n<td>733<\/td>\n<td>2917<\/td>\n<td>93<\/td>\n<td>6.15<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">rtp<\/a><\/td>\n<td>225<\/td>\n<td>1027<\/td>\n<td>11<\/td>\n<td>0.44<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">swimmingpool.cheated<\/a><\/td>\n<td>ERR<\/td>\n<td colspan=\"4\"><\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">swimmingpool<\/a><\/td>\n<td>ERR<\/td>\n<td colspan=\"4\"><\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">swimmingpoolInv<\/a><\/td>\n<td>ERR<\/td>\n<td colspan=\"4\"><\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">SYNAPSE<\/a><\/td>\n<td>162<\/td>\n<td>816<\/td>\n<td>18<\/td>\n<td>0.21<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">ticket2i<\/a><\/td>\n<td>1251<\/td>\n<td>5048<\/td>\n<td>133<\/td>\n<td>0.28<\/td>\n<td>0.01<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">ticket3i<\/a><\/td>\n<td>5601<\/td>\n<td>22332<\/td>\n<td>609<\/td>\n<td>0.46<\/td>\n<td>0.04<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">train<\/a><\/td>\n<td>37<\/td>\n<td>325<\/td>\n<td>1<\/td>\n<td>0.56<\/td>\n<td>0<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">ttp2<\/a><\/td>\n<td>126511<\/td>\n<td>502715<\/td>\n<td>17373<\/td>\n<td>72.80<\/td>\n<td>41.97<\/td>\n<\/tr>\n<tr>\n<td><a class=\"missing source\">ttp<\/a><\/td>\n<td>92890<\/td>\n<td>366993<\/td>\n<td>17971<\/td>\n<td>49.88<\/td>\n<td>26.32<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span id=\"fn1\" class=\"wikianchor\">[1]<\/span> Jean-Michel Couvreur. <a href=\"https:\/\/tapas.labri.fr\/wp\/wp-content\/uploads\/2017\/02\/jmc-sataf.pdf\">A BDD-like Implementation of an Automata Package.<\/a> In Revised Selected Papers of the 9th International Conference on Implementation and Application of Automata (CIAA&#8217;04), Kingston, Ontario, Canada, July 2004, LNCS 3317, pages 310-311. Springer, 2005. <a class=\"ext-link\" href=\"http:\/\/altarica.labri.fr\/pub\/publications\/jmc-sataf.ps\"><span class=\"icon\">\u200b<\/span><\/a><\/p>\n<p><span id=\"fn2\" class=\"wikianchor\">[2]<\/span> J\u00e9r\u00f4me Leroux. <a href=\"https:\/\/tapas.labri.fr\/wp\/wp-content\/uploads\/2017\/02\/Leroux-these.pdf\">Algorithmique de la v\u00e9rification des syst\u00e8mes \u00e0 compteurs. Approximation et acc\u00e9l\u00e9ration. Impl\u00e9mentation de l\u2019outil FAST.<\/a> Th\u00e8se de doctorat, Laboratoire Sp\u00e9cification et V\u00e9rification, ENS Cachan, France, December 2003. <a class=\"ext-link\" href=\"http:\/\/www.lsv.ens-cachan.fr\/Publis\/PAPERS\/PS\/Leroux-these.ps.gz\"><span class=\"icon\">\u200b<\/span>PS<\/a><\/p>\n<p><span id=\"fn3\" class=\"wikianchor\">[3]<\/span> J\u00e9r\u00f4me Leroux.\u00a0<a href=\"https:\/\/tapas.labri.fr\/wp\/wp-content\/uploads\/2017\/02\/jl-lics05.pdf\"> A Polynomial Time Presburger Criterion and Synthesis for Number Decision Diagrams.<\/a> In LICS, pages 147\u2013156. IEEE Comp. Soc., 2005.<\/p>\n<p><span id=\"fn4\" class=\"wikianchor\">[4]<\/span> Shared-automata are minimal and complete.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>SATAF is a library implementing Shared Automata. This data-structure has been proposed by \u200bJ.-M. Couvreur in [1]. The prototype of J.-M. Couvreur, called PresTAF (written in Java), has been rewritten using the C language and splitted into two libraries: SATAF &hellip; <a href=\"https:\/\/tapas.labri.fr\/wp\/?page_id=14\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-14","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tapas.labri.fr\/wp\/index.php?rest_route=\/wp\/v2\/pages\/14","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tapas.labri.fr\/wp\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tapas.labri.fr\/wp\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tapas.labri.fr\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tapas.labri.fr\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=14"}],"version-history":[{"count":6,"href":"https:\/\/tapas.labri.fr\/wp\/index.php?rest_route=\/wp\/v2\/pages\/14\/revisions"}],"predecessor-version":[{"id":122,"href":"https:\/\/tapas.labri.fr\/wp\/index.php?rest_route=\/wp\/v2\/pages\/14\/revisions\/122"}],"wp:attachment":[{"href":"https:\/\/tapas.labri.fr\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=14"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}